抓取自定义属性值包含字符串的元素-XPath Selenium

时间:2019-03-06 21:54:15

标签: javascript selenium xpath

在某些应用程序中,div具有自定义的提示属性:

<div tip="<b>Kobold łucznik</b>" style="left: 450px; top: 220px;">...</div>
<div tip="<b>Kobold łucznik</b>" style="left: 320px; top: 320px;">...</div>

我正在使用nodeJs硒Web驱动程序从此应用程序中提取一些数据。我发现我可以使用xpath来获取属性等于某物的元素的信息。

我要实现的是找到自定义属性tip的值包含字符串'Kobold łucznik'的所有元素。我想要这样做是为了能够从left: x pxtop: y px收集x和y并在以后将其推送到某些对象数组。

但是第一步是找到所有这些元素。

我尝试过这样:

driver.findElements(webdriver.By.xpath('//@*[contains('Kobold łucznik','tip')]/..'))

但是没有运气。


正如@ zx485在评论部分中所述,这里的问题是tip属性值中包含<。不幸的是,我无法更改tip的值。我的应用程序正常运行的关键是抓住这些元素,如果不这样做,我将无法完成工作。

1 个答案:

答案 0 :(得分:1)

我认为这应该有效

driver.findElements(By.xpath("//div[contains(@tip,'Kobold łucznik')]")

或使用快速且兼容更多浏览器的css选择器

driver.findElements(By.css("div[tip*='Kobold łucznik']"))