我正在" org.openqa.selenium.WebDriverException:"点击" Addtocart"使用selenium webdriver在Flipkart网站链接

时间:2016-05-15 13:05:52

标签: selenium

我无法点击此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();     


    }

}

3 个答案:

答案 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)被隐藏了。 看来这样,当我禁用隐藏时:

enter image description here

首先尝试调试你的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);


    }

}