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

标签 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,当您想要选择特定元素时,情况确实如此。但是我正在使用一些业务级别的语言(在我的例子中是小 cucumber ),我想写一个通用的指令。它看起来像 当我右键单击元素“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'])

最佳答案

有了 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')

关于css - Watir:第一个表格单元格内的 a-href 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27190679/

相关文章:

ruby - 两个列表中公共(public)值的方法

ruby - 将 ActiveRecord 如何使用模块应用到其他 Ruby 项目

escaping - Cucumber 步骤定义中的转义字符

ruby-on-rails - 你如何在 cucumber 中启动另一个 Rails 实例?

css - 在 css lightbox 中打开 jquery ui 对话框

javascript - 有没有更短的方法来编写这个 jquery 切换代码?

ruby - 如何在 'context' 和 'it' block 内外调用相同的方法

eclipse - Eclipse 无法识别 Cucumber 功能

javascript - 网站上的 Accordion 菜单之前和之后的图标

javascript - 打印预览中的第一页后模态内容被 chop