Watir使用following_sibling定位元素失败并报错的问题求助
Watir使用following_sibling定位元素失败并报错的问题求助
嘿,我来帮你排查这个问题~
首先,你代码里的报错原因很明确:visible: 'Website'这个写法完全错了!Watir的visible定位器参数只能接受布尔值(true或false),用来判断元素是否处于可见状态,根本不能用来匹配元素的文本内容。你想用“Website”这个文本定位元素,得用text定位器才行。
给你几个修正后的可行方案,选顺手的用就行:
方案1:修正定位器+调整following_sibling索引
把visible换成text,同时注意following_sibling的索引是从0开始的,你要找的是的第一个兄弟元素,所以索引用0:
website = b.element(class: 'vcard').element(text: 'Website').following_sibling(index: 0).text
甚至可以省略index参数,默认会取第一个匹配的兄弟元素:
website = b.element(class: 'vcard').element(text: 'Website').following_sibling.text
方案2:通过父元素定位
既然和属于同一个行,也可以先找到的父元素,再直接定位里面的:
website = b.element(class: 'vcard').element(text: 'Website').parent.element(tag_name: 'td').text
方案3:用XPath直接定位目标
如果喜欢用XPath,可以一步到位定位到对应行的:
website = b.element(class: 'vcard').element(xpath: './tbody/tr[th/text()="Website"]/td').text
另外补充一句:你提到这是Wikipedia页面的infobox,其实也可以直接通过infobox-data类来定位,不过前提是这个网站链接是唯一的infobox-data元素(或者是第N个),但用文本匹配的方式更稳妥,避免页面结构变动导致定位失效。
备注:内容来源于stack exchange,提问作者Rich_F
相关产品推荐
相关产品推荐

