编程语言
首页 > 编程语言> > python – 从所有元素中获取文本匹配Selenium中的模式

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_”)]然后遍历返回的匹配数组并获取每个元素的文本

标签:selenium-rc,python,selenium
来源: https://codeday.me/bug/20190723/1517796.html