我有一个元素,例如#<Watir::IFrame:0x..f98fef949215c673e located=false selector={:element=>(webdriver element)}>
。如何确定它是什么标签(iframe)?
通过搜索类似的Javascript方法找到它:存在element.tag_name
,但在将其用于 iframe 时,我得到NoMethodError: private method 'tag_name' called for #<Watir::IFrame:0x00000002f8c288>'
。
对于 iframe ,.tag_name
是否有其他替代方法?
答案 0 :(得分:2)
该异常意味着tag_name
方法对于Watir :: IFrame(和Watir :: Frame)对象是私有的。 &#34;私人&#34;,以及&#34;公共&#34;和&#34; protected&#34;,方法用于控制类中方法的访问。 Ruby Pickaxe book对方法类型有很好的描述:
最终,这意味着您无法从课堂外调用tag_name
。
鉴于Watir API允许为其他元素类型调用tag_name
方法,我会说这是一个错误。已打开拉取请求,方法已公开Issue 293。
作为解决方法,您可以使用send
:
browser.iframe.send('tag_name')
#=> "iframe"
请注意,鉴于您已经拥有Watir :: IFrame对象,并且根据您尝试执行的操作,您可能不需要检查标记名称。您可以检查对象的类:
browser.iframe.class
#=> Watir::IFrame