当我在Watir-webdriver
中写下打击代码时:
$browser.checkbox(:index,0).click
它出现以下错误:
元素不可见(会话信息:chrome = 48.0.2564.97)(驱动程序 info:chromedriver = 2.9.248315,platform = Windows NT 6.1 SP1 x86_64)
然后我写了这段代码$browser.input(:index,0).click
然后它报告了这个错误:
未知错误:元素在点(952,17)处无法点击。其他 元素会收到点击:... (会话信息:chrome = 48.0.2564.97)(驱动信息: chromedriver = 2.9.248315,platform = Windows NT 6.1 SP1 x86_64)
但是元素清晰可见,并且上面给出的两行代码在watir-classic
中完全可行,我们甚至不需要滚动屏幕。
任何人都可以建议我为什么会这样吗?为什么watir-webdriver
不如watir-classic
那么舒服?
<td class="centred"> <label class="label-checkbox"> <input type="checkbox" data-ng-model="cover.IsSelected" class="ng-pristine ng-valid"> <div class="fake-checkbox"> <span class="glyphicon glyphicon-ok"></span> </div> </label> </td>
答案 0 :(得分:0)
您需要做的第一件事是update your chromedriver,因为版本2.9是2岁。该二进制文件需要与当前版本的chrome保持同步。很可能只有这一点才能解决您的问题。
如果这是一个可见性问题...... Watir(和Selenium和WebDriver)的目的是模仿用户的行为。如果该复选框对用户不可见,则您无法在测试中单击该复选框。
如果该复选框最初是不可见的,但后来变得可见,则可以执行以下操作:browser.checkbox.when_present.click
(请注意,index: 0
是默认行为,不是必需的)< / p>
如果复选框中有一些令人兴奋的javascript事物以一种永远不可见的方式覆盖它,并且点击可见的内容会引发&#34;元素无法点击&#34;错误,您可能需要执行browser.checkbox.when_present.fire_event :click
该方法不能模仿用户在您的网站上实际执行的操作,因此它只能用作最后的手段。