Selenium无法获取ProductOrAdCard嵌套href属性问题求助
Selenium提取商品卡片内嵌套a标签的href解决方案
你之前的代码问题在于直接给商品卡片div元素获取href属性,但div本身没有这个属性,目标链接在div内部的<a>标签里。加上中间span类名动态变化,用跨层级定位就能绕过这个问题,两种可行方法如下:
直接定位所有目标a标签
写xpath直接匹配商品卡片内部的所有a标签,不管中间层级:List<WebElement> productLinks = driver.findElements(By.xpath("//div[@data-test-component='ProductOrAdCard']//a")); for (WebElement link : productLinks) { String href = link.getAttribute("href"); // 这里可以处理获取到的href,比如打印或存储 System.out.println(href); }这里的
//是跨层级定位,会忽略中间动态类名的span,直接找到div下所有嵌套的a标签。先定位卡片再内部查找a标签
如果需要先操作商品卡片再提取链接,可先获取所有卡片,再在每个卡片范围内用相对路径找a标签:List<WebElement> productCards = driver.findElements(By.xpath("//div[@data-test-component='ProductOrAdCard']")); for (WebElement card : productCards) { // 用.//a表示从当前卡片元素的子节点开始查找,而非根节点 WebElement link = card.findElement(By.xpath(".//a")); String href = link.getAttribute("href"); System.out.println(href); }
内容的提问来源于stack exchange,提问作者Artist
相关产品推荐
相关产品推荐

