【发布时间】:2021-06-21 16:02:43
【问题描述】:
我正在尝试单击表格中的所有链接。 xpath 在下面。
(2..lines).each do |i|
browser.element(:xpath => "//*[@id=\"StmtSummaryForm:stmtDataTabletbody0\"]/tr[{i}]/td[3]/a").click
end
但是,我明白了
NoMethodError: undefined method `click' for #<Watir::HTMLElementCollection:0x00007fcfa69d3c08>
我认为我的 xpath 是错误的,或者我错误地使用了 watir。
试探:
[61] pry(main)> elements = @browser.elements(:xpath => "//*[@id=\"StmtSummaryForm:stmtDataTabletbody0\"]/tr[2]/td[3]/a")
=> #<Watir::HTMLElementCollection:0x00007fcfa7424130
@query_scope=#<Watir::Browser:0x..f0106c8d0f94f382 url="https://personal.domain.com/us/Statements" title="Statements">,
@selector={:xpath=>"//*[@id=\"StmtSummaryForm:stmtDataTabletbody0\"]/tr[2]/td[3]/a"},
@selector_builder=
#<Watir::Locators::Element::SelectorBuilder:0x00007fcfa6b8fb78
@built={:xpath=>"//*[@id=\"StmtSummaryForm:stmtDataTabletbody0\"]/tr[2]/td[3]/a"},
@custom_attributes=[],
@query_scope=#<Watir::Browser:0x..f0106c8d0f94f382 url="https://personal.domain.com/us/Statements" title="Statements">,
@selector={:xpath=>"//*[@id=\"StmtSummaryForm:stmtDataTabletbody0\"]/tr[2]/td[3]/a"},
@valid_attributes=
[:title,
:lang,
:dir,
:dataset,
:accesskey,
:accessKey,
:innertext,
:innerText,
:onabort,
:onblur,
:oncancel,
:oncanplay,
:oncanplaythrough,
:onchange,
:onclick,
:onclose,
:oncuechange,
:ondblclick,
:ondrag,
:ondragend,
:ondragenter,
:ondragexit,
:ondragleave,
:ondragover,
:ondragstart,
:ondrop,
:ondurationchange,
:onemptied,
我也试过了:
[68] pry(main)> elements = @browser.elements(:xpath => "//*[@id=\"StmtSummaryForm:stmtDataTabletbody0\"]/tr[2]/node()").links
/Users/aa/.rvm/gems/ruby-2.7.1/gems/pry-0.12.2/lib/pry/exceptions.rb:28: warning: $SAFE will become a normal global variable in Ruby 3.0
NoMethodError: undefined method `links' for #<Watir::HTMLElementCollection:0x00007fcfa744e610>
【问题讨论】: