Watir中按钮元素的元素不可见错误

时间:2015-07-21 11:16:54

标签: angularjs watir watir-webdriver

我使用watir为应用程序执行自动化测试,并在选择选择列表选项并填写表单后尝试单击提交按钮。但是,如果单击按钮,则会抛出元素未找到错误

按钮标记的html代码段

<button type="submit" class="md-primary md-raised md-button md-default-
theme" ng-transclude=""><span class="ng-binding 
ng-scope">Submit</span><div style="" class="md-ripple-container">
</div>   
</button>

红宝石脚本

require "watir"
require "watir-webdriver"
browser =  Watir::Browser.new :firefox
browser.goto 'https://54.69.254.137/webui#/landing'
browser.driver.manage.window.maximize
browser.button(:class =>'sign-in md-button md-default-theme').click
browser.text_field(:id =>'input_001').set('abcadmin@example.com')
browser.text_field(:id =>'input_002').set('password')
browser.button(:class =>'md-primary md-raised md-button md-default-  
theme').click
browser.input(:id =>'input_002').when_present.click
browser.element(aria_label:'What do you want to do?').when_present.click
browser.element(:id =>'select_option_00G').when_present.click
browser.element(aria_label:'About what?').when_present.click
browser.element(:id =>'select_option_00P').when_present.click
browser.textarea(:id =>'input_00N').when_present.set('Discuss about 
javascript and later test the application??')
browser.button(:class =>'md-primary md-raised md-button md-default-   
theme').click

它会抛出以下错误

Selenium::WebDriver::Error::ElementNotVisibleError: Element is not 
currently visible and so may not be interacted with

我尝试使用

browser.button(:class =>'md-primary md-raised md-button md-default-    
theme').when_present.click

,但它会浪费时间错误。无法纠正错误.Plz帮助!!

3 个答案:

答案 0 :(得分:0)

您正尝试同时选择多个课程。要做到这一点,你必须使用css选择器而不是类选择器,它看起来像这样:

browser.button(:css =>'.md-primary.md-raised.md-button.md-default-   
theme').click

只有选择单个类名称时,类选项才有效,例如

browser.button(:class =>'md-primary').click

答案 1 :(得分:0)

我在工作中遇到这个错误,当前端开发人员想要设置一个无聊的外观元素(例如按钮或复选框)时。

在这种特殊情况下,span元素覆盖/定型按钮元素。只需点击跨度即可。

browser.span(:text, 'Submit').click

答案 2 :(得分:0)

元素不可见意味着找到了元素,但隐藏或隐藏的元素使得真实用户无法直接点击按钮。

该错误的两个可能原因,一个是其他内容涵盖了您想要的元素。另一个是在dom中有多个匹配的元素,并且选择的元素(除非你给出一个索引值,watir将采用它找到的第一个)是不可见的。

确定哪种情况的快速方法是首先获得匹配元素的计数..通过在尝试单击按钮之前插入一个放入脚本(两行以便于阅读),这很容易

buttons_found = browser.buttons(:class =>'md-primary md-raised md-button md-default-theme').size
puts "I found #{buttons_found} matching buttons"

如果返回1以外的任何内容,则可能是您正在选择隐藏按钮。也许看起来通过在容器元素中查看watir来选择它,或者找到一种更独特的方式来识别您想要的按钮。

请注意,使用类组合可能有点脆弱,因为类通常用于驱动CSS格式。这可能会产生两个问题,一个是具有相同格式的任何按钮可能具有相同的类组合,如果视觉设计更改,类也可以更改例如,如果找到多个,则可以尝试选择按钮通过它的文字,例如:

browser.button(:text 'Submit').click

如果只找到一个元素,那么看看是否有其他元素可能掩盖了你想要的元素,并尝试点击它。

相关问题