今天我在发布此问题的硒 C# 部分看到了一个问题,我尝试通过 WATIR 编码解决这个问题,我编写了以下代码,WATIR 将此选择列表标识为不可见。
b.goto 'http://automationpractice.com/index.php'
b.img(title: 'Faded Short Sleeve T-shirts').click
b.iframe(xpath: "//*[starts-with(@id,'fancybox-frame')]").select_list.select("L")
但是,如果我通过下面的代码选择相同的select_list,它可以正常工作。
b.iframe(xpath: "//*[starts-with(@id,'fancybox-frame')]").select_list.option(text: "L").click
我不明白这里有什么区别,当我放一个调试指针时,两者都在对find_element(tag_name: "select")
进行硒调用,第一个由于元素不可见而失败,但第二个通过
@Titus,@JustinKo 你能给我解释一下这里发生了什么吗?有什么区别?
注意:请在Chrome中运行它。
从评论移动到答案:
问题是我们重构了正常的(非选择列表(方式,不提前检查元素是否显示,并在Selenium抱怨时将等待逻辑放在救援块中。选择列表代码仍在提前检查可见性,并且此特定选择列表元素不会根据Selenium显示。由于Selenium似乎可以选择选项而不显示显示选择列表,因此Watir不应该等待这一点。
我已经在这里修复了它,它将在 Watir 6.13 中工作(应该"很快"发布(
https://github.com/watir/watir/commit/77af164fcdecb71d8d2240110d3fb4b1dabeee4b