我有我的css别名,如:
module MyPage
def locator(key, *options)
hash = {
"FIRST_TABLE_CELL_HREF" => [ :css => '#my-table td:nth-child(1):first a']
}
end
我希望点击该别名:
@page.find("FIRST_TABLE_CELL_HREF").when_present.right_click
问题:这是一个Javascript样式别名,所以它不起作用。
问题: 如何编写相同的Ruby样式css别名?
P.S。 $('#my-table td:nth-child(1):first a')
在浏览器控制台中运行良好。
对于@TitusFortner ,当您想要选择特定元素时,这是真的。但我正在使用一些商业级语言(在我的情况下是Gherkin),我想写一个通用指令。它看起来像When I right click on the element "FIRST_TABLE_CELL_HREF"
。该指令将映射到:
When(/^I right click(?: on|)(?: the|) "([^\"]*)"$/i) do |scope|
@page.find(scope).when_present.right_click
end
其中@page = @browser.visit(SomePage)
,其中@browser = BrowserBase.new start_browser(ENV['BROWSER'])
答案 0 :(得分:2)
使用Watir,你甚至不需要使用css
browser = Watir::Browser.new
表格中的第一个链接:
browser.table(id: 'my-table').link
表格中第一个数据单元格中的链接:
browser.table(id: 'my-table').td.link
如果出于某种原因必须只是css:
browser.link(css: '#my-table a')
此外,如果您的表位于iframe的上下文中,则必须显式声明它,因为除非特别切换到,否则驱动程序只能看到顶级浏览上下文。使用Watir,这将有效:
browser.iframe(id: 'iframe_id').table(id: 'my-table').link
这不起作用:
browser.link(css: '#iframe_id #my-table a')