Css Watir:第一个表格单元格内a-href的选择器
我有我的css别名,比如:Css Watir:第一个表格单元格内a-href的选择器,css,ruby,cucumber,watir,gherkin,Css,Ruby,Cucumber,Watir,Gherkin,我有我的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 问题:这是一个
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.$(“#我的表td:nth child(1):first a”)
在浏览器控制台中运行良好
对于@TitusFortner当您想要选择特定元素时,这是正确的。但我正在使用一些业务级别的语言(在我的例子中是小黄瓜),我想编写一个通用指令。当我右键单击元素“FIRST\u TABLE\u CELL\u HREF”时,它看起来像是。该指令将映射到:
When(/^I right click(?: on|)(?: the|) "([^\"]*)"$/i) do |scope|
@page.find(scope).when_present.right_click
end
Where@page=@browser.visit(SomePage)
,依次@browser=BrowserBase.new start\u browser(ENV['browser'])
使用Watir,您通常甚至不需要使用css
browser=Watir::browser.new
表中的第一个链接:
browser.table(id:“我的表”).link
表中第一个数据单元中的链接:
browser.table(id:'my table').td.link
如果出于某种原因只能使用css:
browser.link(css:“#我的表格a”)
此外,如果您的表位于iframe的上下文中,则必须显式声明它,因为驱动程序只能看到顶级浏览上下文,除非特别切换到。对于Watir,这将起作用:
browser.iframe(id:'iframe_id')。table(id:'my table')。link
这是行不通的:
browser.link(css:“#iframe\u id#my table a”)
如果链接位于第一个表格单元格中,是否意味着它是表格中的第一个链接?根据您如何定义find
方法,您可以执行:css=>“#我的表a”
。通过给出find
方法的定义和HTML表的一个示例,这将有助于澄清这个问题。@JustinKo您的意思是“第一个\u表\u单元格\u HREF”=>[:css=>“#我的表a',:index=>0]
?如果没有:index=>0
,这对meI来说是行不通的,因为Watir隐式地做到了这一点。但是,考虑到这不起作用,我认为您必须分享find
方法的作用,并给出一个示例表来说明问题。不幸的是,仅仅知道它不起作用并不能帮助我们确定问题/解决方案。@JustinKo请看我问题的最后一部分。这足够了吗?这找不到您想要的元素吗@browser.element(css:“#我的表td a”)
如果它没有,您能验证它是否不在iframe中吗?第二个问题是css本身可能并不总是能满足您的需要,使用cucumber根本不会影响这一点。您当前的查找方法是这样的@browser.element(css:locator[scope])
如果您的locator方法返回如下哈希值:{'FIRST\u TABLE\u CELL\u HREF'=>“TABLE(id:'my TABLE').td}
则您的find方法可以如下:@browser.send(locator(scope))