【问题标题】:How can Watir-WebDriver find a class which was updated through JS?Watir-WebDriver 如何找到通过 JS 更新的类?
【发布时间】:2015-01-18 16:28:33
【问题描述】:

我正在尝试做的是单击图像滑块上的“下一步”按钮并验证它是否将我带到下一张图像。

分页点具有“btn dot icon”类。有一个 EventListener,它为当前选定幻灯片的 pip 提供类“btn dot icon selected”。我可以在 irb 中验证这一点:

irb(main):091:0> @b.span(:class, 'btn dot icon selected').text
=> "Page 0"
irb(main):092:0> @b.span(:text => 'Next', :index => 1).click
=> []
irb(main):093:0> @b.span(:class, 'btn dot icon selected').text
=> "Page 1"

但是,通过 Watir-WebDriver 运行相同的程序,它会在单击“下一步”时返回“第 0 页”。添加隐式等待并没有什么不同。

这可能是什么问题?

注意:“下一个”按钮匹配器会查找第二个匹配项 (:index => 1),因为在我感兴趣的滑块上方还有另一个滑块,但该滑块没有分页点(通过 @ 验证987654322@).

Ruby 1.9.3p545、Watir-WebDriver 0.6.11、Selenium-WebDriver 2.44.0、Firefox 33.1

【问题讨论】:

  • 当它在 irb 而不是脚本中工作时,这通常意味着它是一个时间问题。你是怎么等待的?
  • @b.driver.manage.timeouts.implicit_wait = 30 这是在点击下一步之后放置的。然后测试确实需要大约 30 秒的时间才能运行,但仍会导致“Selenium::WebDriver::Error::ElementNotVisibleError”。好的,握住电话,我在进一步调查后才发现这个问题。最终我注意到,虽然点击事件被触发而没有错误,但它没有任何效果。我查找了如何将点击作为 JavaScript 事件执行,它确实有效。感谢您的帮助!

标签: watir-webdriver


【解决方案1】:

结果证明是一个比我预期的更简单的解决方案。通过更改解决了它

@b.span(:text => 'Next', :index => 1).click

@b.span(:text => 'Next', :index => 1).fire_event("onclick")

Watir-WebDriver 成功执行了跨度的点击,但它似乎无法在该跨度上触发 JavaScript 点击事件。手动使其触发 JavaScript 事件有效。

【讨论】:

    猜你喜欢
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多