Watir:第一个表格单元格中a-href的选择器

时间:2014-11-28 14:22:04

标签: 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

问题:这是一个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'])

1 个答案:

答案 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')