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



今天我在发布此问题的硒 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

最新更新