我使用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帮助!!
答案 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
如果只找到一个元素,那么看看是否有其他元素可能掩盖了你想要的元素,并尝试点击它。