Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误';无法定位元素';尝试查找';添加到购物车';Flipkart上的按钮_Java_Selenium_Selenium Webdriver_Xpath_Css Selectors - Fatal编程技术网

Java 错误';无法定位元素';尝试查找';添加到购物车';Flipkart上的按钮

Java 错误';无法定位元素';尝试查找';添加到购物车';Flipkart上的按钮,java,selenium,selenium-webdriver,xpath,css-selectors,Java,Selenium,Selenium Webdriver,Xpath,Css Selectors,我试图在Flipkart上找到添加到购物车按钮,但它不起作用 我试过下面的XPath,但都不管用 By AddToCart= By.xpath("//button[@class='_2AkmmA _2Npkh4 _2MWPVK'][text()='ADD TO CART']"); 或 //错误 org.openqa.selenium.NoSuchElementException:没有这样的元素:找不到元素:{“方法”:“xpath”,“选择器”:“//button[@class=”''''u2

我试图在Flipkart上找到
添加到购物车
按钮,但它不起作用

我试过下面的XPath,但都不管用

By AddToCart= By.xpath("//button[@class='_2AkmmA _2Npkh4 _2MWPVK'][text()='ADD TO CART']");

//错误

org.openqa.selenium.NoSuchElementException:没有这样的元素:找不到元素:{“方法”:“xpath”,“选择器”:“//button[@class=”''''u2akmma\u2npkh4''u2mwpvk'][text()='addtocart']”

请尝试以下xpath:

.//ul[@class='row']/li/button

尝试以下Xpath

//button[@class='_2AkmmA _2Npkh4 _2MWPVK' and contains(.,'ADD TO CART')]


此错误消息

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@class='_2AkmmA _2Npkh4 _2MWPVK'][text()='ADD TO CART']"}
…表示WebDriver无法定位元素

你很接近。要定位并
单击(
)文本为的元素“添加到购物车”,您必须将
元素的WebDriverWait诱导为可选择()
,并且您可以使用以下任一项:

  • css选择器

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("ul.row>li>button"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[text()='ADD TO CART']"))).click();
    
试试这个

通过CSS选择器 --
.row.col>按钮

通过XPath
--
//button[text()=“ADD TO CART”]
您也可以尝试使用该类

下面是这样的


//按钮[@class=”\u 2AkmmA\u 2Npkh4\u 2MWPVK']

我遇到了完全相同的问题,我注意到当选择产品时,会打开一个新窗口,selenium会在旧页面中搜索元素,结果显示错误消息:

org.openqa.selenium.NoSuchElementException:无此类元素:无法 定位元素:{“方法”:“xpath”,“选择器”:

因此,问题是您没有切换到打开的窗口,webdriver在旧页面而不是新打开的页面中搜索元素

当我在点击产品后尝试下面的代码,并在应用下面的代码后,搜索“添加到购物车”并继续时,这个问题得到了解决

解决方案:

String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
   driver.switchTo().window(winHandle);
}

为这个按钮添加HTML代码,然后我们可以帮助你。等待也可能有问题。我正在尝试自动化一个电子商务网站,搜索iPhone6s plus,对16gb的iPhone进行排序并添加到购物车。“添加到购物车”,HTML标签是w3.org/2000/svg“>添加到CartU是否尝试使用Thread.sleep,然后单击,以便排除等待问题?如果您能够单击,则其等待问题,如果不能,则说明您的代码有问题。是的,您使用了Thread.sleep。xpath确实检查了按钮,但在代码执行期间不起作用。我还尝试了新的WebDriverWait(驱动程序,20).until(ExpectedConditions.elementToBeClickable(By.xpath(//按钮[text()='ADD TO CART']))。单击();但不确定我将如何在页面对象模型中使用它。请将您的代码粘贴到此处,我将尝试在我的pc上执行它,看看是否有效。谢谢。但这对我仍然不起作用,并引发相同的错误。我正在使用页面对象模型,还尝试使用JavascriptExecutor向下滚动以使“添加到购物车”可单击。有什么建议吗?
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("ul.row>li>button"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[text()='ADD TO CART']"))).click();
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
   driver.switchTo().window(winHandle);
}