我找不到合适的元素 - 单击 link Ruby

I can not locate proper element - click on link Ruby

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

我尝试使用几个例子 例如

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

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

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

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

主要问题是您告诉 Watir 寻找 button,而您实际上想要 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

我想知道如何使用指向 link 的 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 和 link 定位器找到的元素数量,以确保您得到正确的元素:

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