Javascript 硒xpath问题
我在使用selenium和xpath时遇到了一个非常奇怪的问题。我有一个页面,呈现25Javascript 硒xpath问题,javascript,selenium,selenium-webdriver,web-scraping,selenium-chromedriver,Javascript,Selenium,Selenium Webdriver,Web Scraping,Selenium Chromedriver,我在使用selenium和xpath时遇到了一个非常奇怪的问题。我有一个页面,呈现25 这个带有alt折叠列表的图像显示在一个中,您的xpath应该更像: let text = await driver.getPageSource(); var count = (text.match(/alt="Expand List"/g) || []).length; let items = await driver.findElements(By.xpath("//a[//img[
这个带有alt折叠列表的图像显示在一个中,您的xpath应该更像:
let text = await driver.getPageSource();
var count = (text.match(/alt="Expand List"/g) || []).length;
let items = await driver.findElements(By.xpath("//a[//img[contains(@alt,'Expand List')]]"))
console.log(count, items.length); //outputs 25, 32
一条斜线表示它是父项//a的子项
我强烈建议使用brower插件来测试XPath。我几乎每天都使用的一种是ChroPath。您还可以在devtools控制台中测试XPath,方法如下
//a/img[contains(@alt,'Expand List')]
将给出如下输出:
您可以尝试使用像//a//img这样的XPATH吗[contains@alt,'Expand List']?我认为您的xpath没有正确定义谓词。我认为它是找到任何一个A,然后为谓词//img返回true[contains@alt,“Expand List”]由于使用了//,因此始终为真。试试上面评论中的例子,我认为它更接近你的意图。
$x('//a/img[contains(@alt,'Expand List')]')