Selenium / Ruby - 等等然后点击?

时间:2016-01-20 16:12:45

标签: angularjs selenium

如果我在没有先等待元素的情况下运行脚本,它会快速移动并失败,因为该项目不可用。我与之交互的页面是HTML5 / Angular。我的问题是 - 是否有更有效的方式等待一个项目,然后点击它?我在下面做的很棒但是必须等待,然后点击,然后等待下一件事,然后一遍又一遍地点击并不是最好的方式。

设置:

def wait_for(timeout = 55)

    Selenium::WebDriver::Wait.new(:timeout => timeout).until { yield }

end

def displayed?(how, what)

    @driver.manage.timeouts.implicit_wait = 55

    @driver.find_element(how, what).displayed?

end

执行:

 wait_for { displayed?(:xpath, "//div[text() = 'Previous Year']") }

 @driver.find_element(:xpath, "//div[text() = 'Previous Year']").click  

1 个答案:

答案 0 :(得分:1)

我们遇到了与QA脚本类似的问题,我们的解决方案是隐藏元素(ng-hide),直到控制器和服务完成所有工作。我认为你的问题是Angular视图代码在构建和填充时可能都是可见的,所以Selenium通过了显示检查,但实际上还没有使用它。更好的QA保持隐藏,直到功能。