Selenium限定Driver Scope后仍选错商品问题排查
问题原因与解决方案
核心问题
你定位按钮时用的XPath //div[@class='card-body']/button[2] 是全局搜索(// 表示从整个文档根节点开始查找),而非基于你已经筛选到的ADIDAS ORIGINAL的card-body元素进行相对查找。所以即使你通过Stream拿到了正确的商品元素,点击操作还是会匹配页面上第一个符合该XPath的按钮——也就是ZARA COAT3的按钮。
修复方法
将XPath改为相对路径,在开头添加.,表示从当前元素的上下文范围内搜索:
修改这一行代码:
element.findElement(By.xpath("//div[@class='card-body']/button[2]")).click();
改为:
// 因为element本身就是card-body元素,直接找子节点按钮即可 element.findElement(By.xpath(".//button[2]")).click();
或者保持和原逻辑对齐的精确相对路径:
element.findElement(By.xpath(".//div[@class='card-body']/button[2]")).click();
验证说明
修改后,点击操作会严格在你筛选到的ADIDAS ORIGINAL的card-body元素范围内查找按钮,确保点击的是目标商品的添加购物车按钮。
内容的提问来源于stack exchange,提问作者Srinath Murugula
相关产品推荐
相关产品推荐

