在我的测试自动化中,我目前以这种方式点击页面元素: 睡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
我有什么方法可以让watir等待这些元素,或者睡眠是我唯一的选择吗?
调试记录器输出:
"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)"}}
"
答案 0 :(得分:0)
您的问题并非在它不存在时尝试点击该按钮,而是在它准备好之前尝试点击该按钮。查看按钮,看看您是否找不到属性,只有在它准备就绪时,如课程或点击事件。接下来使用wait_until等待该属性处于就绪状态。
看起来应该是这样的:
上(我的页面).generate_button_element.when_present.click
on(MyPage).wait_until {on(MyPage).button_element.attribute_value(&#39; class&#39;)。eql? &#39;准备&#39;}
上(我的页面).button