无论我尝试做什么,浏览器都会在它有机会找到要查找的元素之前尝试过快地运行测试。如果我放入一个简单的“睡眠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
只需添加到您的test_helper.rb中我给这个一杆,一有机会,我得到。我不相信我试过“展示?”。会发生什么事是它点击下拉菜单然后关闭浏览器太快,它没有时间来检测它。但是,让我试试这个镜头,我会尽快回复你,非常感谢! – Mike
@ wait.until.displayed?确实有用。这可能是我们想要的解决方案。再次感谢。 – Mike