【问题标题】:Watir not waiting for elements to loadWatir 不等待元素加载
【发布时间】:2018-03-15 22:48:18
【问题描述】:

在我的测试自动化中,我目前以这种方式点击页面元素: 睡觉2

  on(MyPage).generate_button_element.when_present.click
  sleep 5
  on(MyPage).button.when_present.click

在上面,我单击“generate_button”,它将运行一些 JS,创建一个按钮,然后单击下一个按钮。在这种情况下,它可以工作。但是,我想知道是否有办法可以消除睡眠呼叫。我尝试了以下方法:

  on(MyPage).generate_button_element.wait_until_present.click
  on(MyPage).button.wait_until_present.click

但它不起作用。我收到以下错误:

Selenium::WebDriver::Error::UnknownError: unknown error: Element 

有什么方法可以让我等待这些元素,或者睡眠是我唯一的选择吗?

调试记录器输出:

"2017-10-04 14:15:41 INFO Selenium <- {"sessionId":"3db2d4a2c23ddd03e43622f3dfcbbab7","status":12,"value":{"message":"invalid element state: Element is not currently interactable and may not be manipulated\n  (Session info: chrome=61.0.3163.100)\n  (Driver info: chromedriver=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b),platform=Mac OS X 10.12.6 x86_64)"}}
"

【问题讨论】:

  • 您使用的是什么版本的 Watir?使用最新版本的 Watir,希望您不需要任何显式等待。另外,您使用的是什么版本的 Page-Object?
  • 我正在使用页面对象 2.2 和 Watir 6.7.3。如果我将其更新为 watir 的后一个版本,我的程序将无法正常工作,因为我认为它破坏了页面对象。
  • 在 Watir 6.8.x 版本中修复了许多等待相关的错误/问题。 Page-Object 2.3 进行了一些更新以解决 Watir 6.8 中所做的更改。我建议尝试升级这两个 gem,看看是否能解决问题。
  • 2.3?我将 2.2.4 视为最新版本。
  • 对不起,我想我读错了更改日志。我的意思是2.2.3

标签: ruby selenium automated-tests cucumber watir


【解决方案1】:

您的问题不在于它试图在按钮不存在时单击它,而是它试图在它准备好之前单击它。查看按钮,看看是否找不到仅在准备就绪时才存在的属性,例如类或单击事件。接下来使用 wait_until 等待该属性处于就绪状态。

它应该看起来像这样:

on(MyPage).generate_button_element.when_present.click

on(MyPage).wait_until { on(MyPage).button_element.attribute_value('class').eql? '准备好了'}

on(MyPage).button

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2018-05-04
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多