我无法点击此Flipkart网站中的添加到购物车链接
我正在" org.openqa.selenium.WebDriverException:"点击" Addtocart"使用selenium webdriver链接Flipkart网站
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Sample {
public static WebDriver driver;
public static void main(String[] args) {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
driver.get("http://www.flipkart.com/samsung-galaxy-j7-6-new-2016-edition/p/itmegmrnggh56u22?pid=MOBEG4XWDK4WBGNU&al=5%2Fv2LfAd8f%2F5738uEXqULMldugMWZuE7Qdj0IGOOVqv3euFa7evSptHq1kfBhuSDZH5Pp6sYgwI%3D&ref=L%3A2032472314537789506&srno=b_1");
WebDriverWait wait = new WebDriverWait(driver,20);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@value='Add to Cart']")));
driver.findElement(By.xpath("//input[@value='Add to Cart']")).click();
}
}
答案 0 :(得分:0)
您应该点击按钮(input
),而不是表单本身:
...
driver.findElement(By.xpath("//input[@value='Add to Cart']")).click();
如果页面需要一些时间加载,您可能需要先等待按钮变为可点击,然后单击它:
(new WebDriverWait(driver, 10))
.until(ExpectedConditions.elementToBeClickable(
By.xpath("//input[@value='Add to Cart']"))
.click();
答案 1 :(得分:0)
当您尝试单击按钮时,似乎有一个div出现。目前,该div(vmiddle)被隐藏了。 看来这样,当我禁用隐藏时:
首先尝试调试你的ide。当您看到此div位于“添加到购物车”按钮前面时,请尝试以下操作: 1.如果是弹出窗口并且可以关闭,请将其关闭并单击添加到购物车 2.如果没有,请尝试向下滚动并在看到时单击按钮。
滚动方法可以像 JavascriptExecutor jse =(JavascriptExecutor)驱动程序; jse.executeScript(“window.scrollBy(0,250)”,“”);答案 2 :(得分:0)
我找到了解决方案。
使用JavaScriptExecutor我点击了Button。感谢您的支持。以下是工作代码。
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor;
public class Flipkart {
public static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
driver = new FirefoxDriver();
// driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
driver.get("http://www.flipkart.com/samsung-galaxy-j7-6-new-2016-edition/p/itmegmrnggh56u22?pid=MOBEG4XWDK4WBGNU&al=5%2Fv2LfAd8f%2F5738uEXqULMldugMWZuE7Qdj0IGOOVqv3euFa7evSptHq1kfBhuSDZH5Pp6sYgwI%3D&ref=L%3A2032472314537789506&srno=b_1");
Thread.sleep(3000);
jsclick(driver.findElement(By.xpath("//input[@value='Add to Cart']")));
public static void jsclick(WebElement element){
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();",element);
}
}