今天,我在硒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中运行它。
答案 0 :(得分:3)
从评论移至答案:
问题在于,我们重构了普通的(非选择列表)方法,以不检查是否提前显示了某个元素,如果Selenium抱怨,则将等待逻辑放入救援块。选择列表代码仍在提前检查可见性,并且根据Selenium不会显示此特定的选择列表元素。由于Selenium似乎可以选择选项而不显示显示的选择列表,因此Watir不应该等待此。
我已经在这里修复它,它将在Watir 6.13中运行(应该“很快”发布)
https://github.com/watir/watir/commit/77af164fcdecb71d8d2240110d3fb4b1dabeee4b