msg没有这样的元素:无法找到元素:

时间:2020-07-28 16:55:49

标签: selenium

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']"));

我收到错误消息“没有这样的元素:无法找到元素:”。如何找到“添加到购物车”对象?

2 个答案:

答案 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

尝试xpath
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')]