HTML:
“添加到购物车”对象
if(!empty($_POST['fname'])){
“获取库存警报”对象
<button class="button spin-button prod-ProductCTA--primary button--primary" data-automation-id="button" data-tl-id="ProductPrimaryCTA-cta_add_to_cart_button" type="button"><span class="button-wrapper"><span class="spin-button-children">Add to cart</span></span></button>
我不想单击“添加到购物车”。我只想将定位器信息存储在WebElement“ addToCart”中。因为对象具有完全相同的属性,所以我选择了此唯一属性“ data-tl-id”,但没有用。
网络驱动程序
<button class="button spin-button prod-ProductCTA--primary button--primary" data-automation-id="button" data-tl-id="cta_oos_button" aria-expanded="false" aria-label="get in stock alert" role="button" tabindex="0" type="button"><span class="button-wrapper"><span class="spin-button-children">Get in-stock alert</span></span></button>
以下为我工作,但以上两个对象具有相同的类名,因此我无法使用该类名。
WebElement addToCart = driver.findElement(By.xpath("//button[@data-tl-id='ProductPrimaryCTA-cta_add_to_cart_button']"));
我也尝试了以下方法,但没有一个对我有用。
WebElement addToCart = driver.findElement(By.xpath("//span[@class='button-wrapper']"));
我收到错误消息“没有这样的元素:无法找到元素:”。如何找到“添加到购物车”对象?
答案 0 :(得分:2)
您的xpath
错误的WebElement addToCart = driver.findElement(By.xpath("//span[text()='Add to cart'"));
尝试以下解决方案
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement webElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='Add to cart']")));
System.out.println("Printing "+webElement.getText());
或者您也可以使用contains
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement webElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(),'Add to cart')]")));
System.out.println("Printing "+webElement.getText());
答案 1 :(得分:1)
此xpath
为您服务,
WebElement addToCart = driver.findElement(By.xpath("//span[@class='button-wrapper']"));
使用它来唯一标识WebElement
driver.findElement(By.xpath("//button[contains(@data-tl-id,'cart')]/span[@class='button-wrapper']"))
您也可以使用此xpath
//span[contains(text(),'Add to cart')]