Select()方法和option()方法的工作原理不同

时间:2018-09-01 17:57:26

标签: ruby selenium watir

今天,我在硒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中运行它。

1 个答案:

答案 0 :(得分:3)

从评论移至答案:

问题在于,我们重构了普通的(非选择列表)方法,以不检查是否提前显示了某个元素,如果Selenium抱怨,则将等待逻辑放入救援块。选择列表代码仍在提前检查可见性,并且根据Selenium不会显示此特定的选择列表元素。由于Selenium似乎可以选择选项而不显示显示的选择列表,因此Watir不应该等待此。

我已经在这里修复它,它将在Watir 6.13中运行(应该“很快”发布)

https://github.com/watir/watir/commit/77af164fcdecb71d8d2240110d3fb4b1dabeee4b