元素不可点击错误 Ruby / Watir

2024-04-13

在我的测试中,我尝试访问 etsy.com,进行搜索,单击结果,然后将商品添加到我的购物车。我可以做所有事情,直到我尝试单击“添加到购物车”按钮。下面的代码实际上在 IRB 中工作,所以我知道我的定位器是可靠的,但是当我运行测试时,我得到一个元素在点错误时不可点击

C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:71:in 'assert_ok': unknown error: Element is not clickable at point (930, 586) (Selenium::WebDriver::Error::UnknownError) (Session info: chrome=61.0.3163.100)

这是我的测试

require 'watir'

# test that a user can search for and add an item to shopping cart
b = Watir::Browser.new :chrome

begin
  b.goto "http://etsy.com"
  b.text_field(:id => 'search-query').set 'bacon is my spirit animal coaster'
  b.button(:value => 'Search').present?
  b.button(:value => 'Search').click
  b.p(:text => /Bacon Spirit Animal Coaster/).click
  b.select_list(:id => 'inventory-variation-select-0').option(:text => 'Single ($8.00)').select
  b.button(:text => /Add to cart/).click

  if b.text.include?("item in your cart")
    puts "Test passed!"
  else
    puts "Test failed!"
  end 

ensure
  b.close
end

这是该按钮的 HTML 页面。

<button class="btn-transaction" type="submit">
            <div class="btn-text">Add to cart</div>
            <div class="ui-toolkit">
                <div class="btn-spinner spinner spinner-small display-none"></div>
            </div>
        </button>

根据浏览器宽度(以及可能的其他因素),“添加到购物车”按钮上可能会浮动对话框。例如,当我的测试失败时,按钮顶部会出现一个开始对话框。 Chrome 尝试点击某个位置。如果另一个元素位于该位置的元素之上,Chrome 将抛出异常。

最简单的解决方案是直接触发点击事件来绕过Chrome的检查:

# Watir > 6.8.0:
b.button(:text => /Add to cart/).click! # note the exclamation mark

# Watir < 6.8.0:
b.button(:text => /Add to cart/).fire_event(:onclick)

其他可能有条件起作用的解决方案:

  • 单击按钮之前最大化浏览器 -browser.window.maximize。这可以将浮动元素移离按钮。
  • 关闭浮动对话框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

元素不可点击错误 Ruby / Watir 的相关文章

随机推荐

  • Laravel 多个 WHERE 子句

    我需要向 Laravel SQL 查询添加多个 where 子句 到目前为止我的 PHP 代码是 date default timezone set America Los Angeles today getdate year today
  • Magento 购物车未更新阿拉伯语商店视图中的数量

    我在 Magento 1 8 1 安装中遇到以下问题 我有两种商店视图 英语 默认 和阿拉伯语 在英文商店视图中 如果我将产品添加到购物车 我可以通过在数量框中输入新数量并单击更新购物车来修改数量 这会更改数量和总数 但是 当我切换到阿拉伯
  • @font-face 在 Firefox 中不配合

    我尝试了很多事情 包括单击与我的问题相关的所有问题 有很多 并尝试了他们所有的 解决方案 但没有一个对我有用 我尝试将 eot 文件包装在条件 IE 语句中 但这也不起作用 有人说如果你不在自己的服务器上托管文件 font face 将无法
  • 尽管被捕获,生成器内部抛出的错误还是完成了它

    我有一个异步生成器函数 它内部调用几个可能引发错误的异步函数 我想要的是 当错误发生时 生成器只是记录它 然后继续进一步工作 所以我有这样的代码 async getAll somestuff try const thing await fe
  • 通过 Git 推送大文件的问题

    目前 当我尝试推送到 Git 存储库时 出现以下错误 remote error GH001 Large files detected remote error Trace 7bbfe5c1099cfe679aa3cd1eee13e10a r
  • 汇编语言中数组的冒泡排序

    我需要对一个无组织的数组进行冒泡排序 其中包含从最大到最小的 7 个整数 因此它看起来像 9 6 5 4 3 2 1 我通过编译器运行我的代码 它说 我不明白这段代码有什么问题 code segment assume ds code cs
  • 下标迭代器内的 lambda

    在下标运算符中使用 lambda 似乎不适用于 g 和 clang 这是 C 标准中的实现错误还是 不愉快 的规则 Example class A public template
  • XAML 绑定到属性

    我的 XAML C Windows 应用商店应用程序中有复选框 我还有 bool 属性 WindowsStoreTestApp SessionData RememberUser这是公共的和静态的 我想要复选框的属性IsChecked与此 b
  • jQuery 中的多个 AJAX 请求

    我有一个函数 可以从两个位置提取数据并将返回的内容放置在向用户显示的模式对话框上 这两个请求都是异步的 因为它们是跨域的 问题在于我不想在两个请求完成加载之前显示模式 在加载模式之前 如何检查以确保两个请求都已完成 我尝试将 openMod
  • 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/batch]

    情况 我正在使用 Spring Batch 为我们的数据仓库构建累积快照 但我遇到了一个我无法弄清楚的配置障碍 我使用 STS SpringSource Tool Suite 2 8 1 创建了一个简单的 Spring Batch 项目春季
  • Keras 错误:调用 Predict_on_batch 时“优化循环失败:已取消:操作已取消”

    我有一些使用 keras 的旧工作代码 我最近把它掸掉并尝试使用它 但使用的是当前版本的 keras tensorflow 调用 Predict on batch 时收到警告 错误 W tensorflow core data root d
  • ValidateRequest = False 但实际上它仍然是 True 并且忽略了它?

    我想禁用请求验证特别是在ASP NET MVC 2 0 RTM 所以我添加了一些必要的查看页面指令部分 如下所示 but 请求验证不是残疾人 我还添加了请求验证属性控制器中的相关操作如下 System Web Mvc ValidateInp
  • ASP.NET MVC 中的 RouteLink 和 ActionLink 有什么区别?

    我认为标题已经概括了这一点 有什么区别RouteLink and ActionLink 在 ASP NET MVC 中 即你什么时候使用Html RouteLink 你什么时候使用Html ActionLink 在你看来 操作和路由不必具有
  • 如何诊断护照真伪?

    由于该函数没有返回值 我如何确定导致该函数失败的原因 我有以下代码 function test req IncomingMessage res ServerResponse next err any gt void passport aut
  • 在jquery中创建循环背景动画

    我想要的是 当页面加载时 背景颜色为红色 10 秒后 bgColor 变为绿色 并带有淡入淡出动画 再过 10 秒后 它会变成橙色 然后又变成红色 依此类推 有人可以帮忙吗 Use 设置间隔 http www w3schools com j
  • Firestore - 如何在数据库中自动减少整数值?

    Firestore 最近推出了一项新功能 可以自动递增和递减整数值 我可以使用增加整数值 例如 FieldValue increment 50 但如何减量呢 我尝试使用FieldValue decrement 50 但FieldValue中
  • 在 C++ 中旋转图像而不使用 OpenCV 函数

    描述 我正在尝试在不使用 C 中的 OpenCV 函数的情况下旋转图像 旋转中心不必是图像的中心 它可能是不同的点 偏离图像中心 到目前为止 我遵循各种来源进行图像插值 我知道source https stackoverflow com a
  • 检测节点的系统路径上是否存在可执行文件

    Question 有没有一种简单的方法可以使用节点判断系统可执行文件在系统路径上是否可用 例如 如果用户安装了 python usr bin python and usr bin is in PATH我如何在 Node 中检测到这一点 相反
  • 在 Filter 内执行并呈现 JSP

    我有一个包含页面顶部内容的 JSP 我们将其称为 header jsp 出于性能原因 我想在构建页面的其余部分之前呈现此 JSP 并将其刷新给用户 看here http developer yahoo com performance rul
  • 元素不可点击错误 Ruby / Watir

    在我的测试中 我尝试访问 etsy com 进行搜索 单击结果 然后将商品添加到我的购物车 我可以做所有事情 直到我尝试单击 添加到购物车 按钮 下面的代码实际上在 IRB 中工作 所以我知道我的定位器是可靠的 但是当我运行测试时 我得到一