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

Select() method and option() method works differently

今天我在发布此问题的 selenium C# 部分看到一个问题,我尝试通过 WATIR 编码解决该问题,我编写了以下代码并且 WATIR 将此 select 列表识别为不可见。

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 同样 select_list,它工作正常。

b.iframe(xpath: "//*[starts-with(@id,'fancybox-frame')]").select_list.option(text: "L").click

我不明白这里有什么区别,当我放置调试指针时,两者都在对 find_element(tag_name: "select") 进行 selenium 调用,第一个由于元素不可见而失败,但第二个通过

@Titus,@JustinKo 你能解释一下这里发生了什么吗?有什么不同?

注:请运行在Chrome.

从评论转到答案:

问题是我们重构了正常的(非select-列表)方式,不检查元素是否提前显示,并将等待逻辑放在救援块中如果硒抱怨。 select-list 代码仍在提前检查可见性,根据 Selenium,这个特定的 select-list 元素不会显示。由于似乎 Selenium 可以 select 选项而不显示 select 列表,Watir 不应该等待这个。

我已经在此处修复它,它将在 Watir 6.13 中运行(应该发布 "soon")

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