我找不到合适的元素 - 点击链接Ruby

时间:2016-05-11 12:13:19

标签: ruby watir

我试图点击链接(见截图) http://imgur.com/q66g7z6 http://imgur.com/KNF1y7z

我尝试使用几个例子 e.g

@browser.button(:class=> '//*[@class="login"]//ul/li[0]/a').click

browser.button(:xpath=> "//a[@data-viewmodel='PagesAsync/RegisterPrivate/RegisterPrivateViewModel']").click

但不正确 我可以看到无法找到元素的消息 有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

主要问题是,当您确实需要button时,您正在告诉Watir寻找link。虽然可以将UI设置为看起来像按钮,但您会注意到HTML具有a标记。

第一个也有错误定位器类型的例子应该是:

@browser.link(:xpath => '//*[@class="login"]//ul/li[0]/a').click

第二个例子应该是:

browser.link(:xpath => "//a[@data-viewmodel='PagesAsync/RegisterPrivate/RegisterPrivateViewModel']").click

请注意,如果使用普通属性定位器,第二个示例将更像Watir:

browser.link(data_viewmodel: 'PagesAsync/RegisterPrivate/RegisterPrivateViewModel').click

答案 1 :(得分:0)

有两种选择。一个是让您的开发人员添加更好的ID。 如果那是不可能的,试试这个: how does ruby webdriver get element with hyphen in <name, value> pair 它在几个类似的情况下对我有用。

答案 2 :(得分:0)

我想知道如何通过使用xpath链接找到一个按钮。您是否使用浏览器或@browser也不清楚。您需要了解如何定义浏览器实例,这可能是以下之一:

@browser = Watir::Browser.new :chrome
###or###
browser = Watir::Browser.start 'example.com', :firefox

如果您还没有创建浏览器实例,那么在使用Watir-Webdriver之前需要先执行此操作。 ;)

关于你的问题,你可以尝试使用文本进行搜索,如果它是这样的独特的,虽然它可能是一个脆弱的测试:

@browser.div(:class => 'login').link(:text => /For priva/).click

但我建议仔细检查使用div和链接定位器找到的元素数量,以确保您获得正确的元素:

@browser.divs(:class => 'login').length
@browser.div(:class => 'login').links(:text => /For priva/).length