2014-09-03 151 views
0

我试图自动化一个场景(在Ruby中)按钮的初始文本是'激活',一旦它被点击,它需要3-5秒做任何必要的事情然后按钮文本更改为“取消激活”。Selenium Webdriver等待按钮文字改变

因为按钮总是存在,所以使用下面的代码并没有帮助。

wait.until { 
    driver.find_element(:id => 'changeStatus') 
} 

如何在点击后检查按钮文本之前询问webdriver等待5秒钟。

回答

1

你应该能够做一个等待和查看文本,而不是

wait.until { 
    driver.find_elements_by_xpath("//*[text()='Deactivate']") 
} 
+0

感谢。是的,这是有效的。一个小记录,我总是(尽可能)使用id而不是xpath。 – 2014-09-03 16:55:03

+0

我使用CSS选择器来查找ID或类名称。 Xpaths有点慢,但能够搜索CSS选择器无法搜索的文本。在你的情况,我不认为有任何其他的选择,而不是寻找与xpath的文本。 – Brendan 2014-09-03 17:18:43

1

布伦丹的答案肯定是正确的,但我会用一个更具体的XPath,因为答案说明会等到字'停用'出现在网页的任何地方。

考虑缩小搜索元素的类型,并进一步缩小ID。你不说是什么类型的元素,所以我想这是一个锚标记(//一),根据需要调整

wait.until { 
    driver.find_elements_by_xpath("//a[@id='changeStatus' and text()='Deactivate']") 
} 

这应该加快搜索速度相当

相关问题