尝试查找以下元素尝试了以下任何操作,任何人都可以帮忙。
<button data-testid="addToClientBasket"
class="sc-kfGgVZ kcCRfu">
<span><i class="icon-Expand_Cross_30_by_30"></i>Add To Basket</span>
</button>
By.xpath("//button[@data-testid='addToClientBasket'");
By.xpath("//div[@id='root']/div/div/div/div[4]/div/div/div[2]/button/span";
By.cssSelector("button.sc-kfGgVZ.kcCRfu.added");
By.cssSelector("button.sc-kfGgVZ.kcCR");
By.cssSelector("button[class='sc-kfGgVZ kcCRfu']");
答案 0 :(得分:0)
尝试使用以下定位器
button.sc-kfGgVZ.kcCRfu
button[data-testid="addToClientBasket"]
//button[@class='sc-kfGgVZ kcCRfu']
//button[@data-testid="addToClientBasket"]
以及在您的案例中定位器不起作用的原因
By.xpath(“ // button [@ data-testid ='addToClientBasket'”);
属性值后无右括号
By.xpath(“ // div [@ id ='root'] / div / div / div / div / div [4] / div / div / div [2] / button / span”;
不确定您的元素路径是否正确
By.cssSelector(“ button.sc-kfGgVZ.kcCRfu.added”);
没有具有
added
类名的按钮By.cssSelector(“ button.sc-kfGgVZ.kcCR”);
没有指定类别组合的按钮
By.cssSelector(“ button [class ='sc-kfGgVZ kcCRfu']”);
这些是2类,因此您必须用
替换空白.
答案 1 :(得分:0)
要使用Selenium将文本标识为添加到购物篮,您可以使用以下Locator Strategies之一:
cssSelector :
driver.findElement(By.cssSelector("button[data-testid='addToClientBasket']>span>i.icon-Expand_Cross_30_by_30"));
xpath :
driver.findElement(By.xpath("//button[@data-testid='addToClientBasket']/span[contains(., 'Add To Basket')]"));
大概,继续前进,您将在元素上调用click()
,在这种情况下,理想情况下,您需要为elementToBeClickable()
引入WebDriverWait,并且可以使用以下{{ 3}}:
cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button[data-testid='addToClientBasket']>span>i.icon-Expand_Cross_30_by_30"))).click();
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@data-testid='addToClientBasket']/span[contains(., 'Add To Basket')]"))).click();