【发布时间】:2018-02-09 21:31:43
【问题描述】:
无论我尝试做什么,浏览器都会在有机会找到我正在寻找的元素之前尝试过快地运行测试。如果我输入一个简单的“sleep 2”,它就有机会下拉菜单并加载并成功找到该元素。但我想学习使用 Selenium Wait 命令。我尝试了以下多种组合,并在网上查看了文档或示例。我发现了很多 Firefox,人们说下面的一些东西在 Firefox 中完美运行,但是对于我和我的项目团队伙伴来说,我们无法让任何等待,无论是隐式的还是显式的,暂停足够长的时间让它检测到元素。该元素不存在,直到下拉菜单被完全删除,然后它才能检测到它。不需要 2 秒,但似乎我的等待命令实际上都不会让它等待。就像我说的,我尝试了许多不同的东西,几乎所有的东西都在下面。如果有人可以帮助指导我,我将不胜感激。这是我尝试过的一些代码:
def setup
@driver = Selenium::WebDriver.for :chrome
@driver.get "https://website.herokuapp.com/"
@wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
# @driver = Selenium::WebDriver.for:chrome
# @driver.manage.timeouts.implicit_wait = 30
# @wait = Selenium::WebDriver::Wait.new(:timeout => 15)
# @wait = Selenium::WebDriver::Wait.new(:timeout => 10)
# @driver.manage.timeouts.implicit_wait = 10
# @wait = Selenium::WebDriver::Wait.new(timeout: 10)
@driver.manage.window.maximize()
# @driver.navigate.to("https://website.herokuapp.com/")
结束
def test_user_name_is_present
login()
@driver.find_element(:class, "navbar-toggle").click()
# user = @driver.find_element(:class, "dropdown-toggle").text
# @wait.until{@driver.find_element(:class, "dropdown-toggle")}
@driver.find_element(:class, "dropdown-toggle")
@wait.until { @driver.find_element(:class => "dropdown-toggle") }
user = @driver.find_element(:class, "dropdown-toggle").text
assert_equal(true, user.include?('HEATHER'), "no user")
end
【问题讨论】:
标签: ruby google-chrome selenium wait