我正在使用 Watir WebDriver。我是红宝石新手。
以下下拉列表始终存在。除非我在它之前加上 sleep(1),否则它会失败。开发人员说,在设置之前的控件之前不会填充下拉菜单。
为此我需要哪些等待命令?我认为在 Selenium 中,我一直等到列表的隐藏内容包含我想要的值,然后我选择了该值。
def enterCompany(company)
@browser.select_list(:id, "ddlCompanyName").select(company)
end
我正在使用 Watir WebDriver。我是红宝石新手。
以下下拉列表始终存在。除非我在它之前加上 sleep(1),否则它会失败。开发人员说,在设置之前的控件之前不会填充下拉菜单。
为此我需要哪些等待命令?我认为在 Selenium 中,我一直等到列表的隐藏内容包含我想要的值,然后我选择了该值。
def enterCompany(company)
@browser.select_list(:id, "ddlCompanyName").select(company)
end
刚刚在这个问题上离线问了我一个问题,所以我想为最新的 Watir 版本提供一个更新的答案,以避免弃用的#when_present
方法:
browser.select_list(id: 'ddlCompanyName').wait_until { |el| el.include? company }.select
您可以使用when_present
等待选项出现后再选择它。基本上,Watir 最多会等待 30 秒以显示该选项。如果它出现的时间早于 30 秒,它将继续执行该操作(即选择)。否则,将引发超时异常。
@browser.select_list(:id, "ddlCompanyName").option(:text => company).when_present.select
请注意,以上假设company
是选项的文本。
另一种选择是等待任何内容出现在下拉列表中。
@browser.wait_until{ @browser.select_list(:id, "ddlCompanyName").options.length > 0 }