微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 从所有元素中获取文本匹配Selenium中的模式

我有一个网站包含以下形式的元素:

<td id="subject_23432423">content I want to read</td>

我如何使用Selenium RC(特别是Python绑定)来读取所有这些元素的内容?我已经完成了所有命令,虽然有很多选项可以找到单个元素,但是没有一个命令可以处理多个匹配的列表.例如,我可以使用以下方法找到特定元素的内容

content = sel.get_text("td[@id='subject_23432423']")

但这假设我已经知道了id,我没有,因为它是动态生成的.

解决方法:

使用Selenium 1 API是不可能的,但是如果subject_始终存在于生成的id中,则可以调用使用XPath // td [contains(@ id,“subject_”)]定位元素的JavaScript.我不确定Selenium browserbot是否为IE提供XPath支持,因此您可能仅限于具有本机支持的浏览器.在Firefox中它将是:

var tds = document.evaluate("//td[contains(@id, \"subject_\")]", document, null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
for ( var i = 0; i < tds.snapshotLength; i++) {
   var td = tds.snapshotItem(i);
   // get text using td.textContent and add it to array or whatever...
   // and return it
}

return ...

您需要在代码中将此脚本声明为字符串,并通过selenium.getEval执行

但是,如果您能够切换到Selenium 2 (WebDriver),则可以使用其API.您需要使用findElementsBy传递XPath // td [contains(@id,“subject_”)]然后遍历返回的匹配数组并获取每个元素的文本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐