无法阻止和放入Selenium WebDriver 3.6

时间:2017-10-28 07:54:43

标签: java selenium testing selenium-webdriver automated-tests

我正在努力拖延但它不起作用。

这是我的代码。

请帮忙,我已经花了很多时间在这上面,但它仍然没有用。

Chrome版本:62.0.3202.75
ChromeDriver:2.33
硒:3.6

public class Drag_And_Drop {
static String baseURl="https://www.google.com";
static WebDriver driver;

@BeforeMethod
public void openBrowser() {     
    System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/drivers/chromedriver.exe");
    driver=new ChromeDriver();
    driver.get(baseURl);
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
}

@Test
public void verifyCount() {

    WebElement searchBox = driver.findElement(By.xpath(".//*[@id='lst-ib']"));
    searchBox.sendKeys("jqwidget drag and drop");
    searchBox.sendKeys(Keys.ENTER);     

    WebElement link = driver.findElement(By.linkText("jQuery DragDrop, DragDrop plug-in, Drag and Drop ... - jQWidgets"));
    link.click();       

    driver.switchTo().frame(0);

    WebElement source = driver.findElement(By.xpath(".//*[@id='jqxWidgete3128591f541']"));
    source.click();

    WebElement target = driver.findElement(By.xpath(".//*[@id='cart']"));       

    Actions actions = new Actions(driver);
    actions.dragAndDrop(source, target).build().perform();
}   

@AfterMethod
public void closeBrowser() {
        driver.quit();
}
}

1 个答案:

答案 0 :(得分:1)

您的代码中存在问题:

WebElement source = driver.findElement(By.xpath(".//*[@id='jqxWidgete3128591f541']"));

您正在尝试查找具有id的元素,但实际上,此ID始终不同。如果您打开2个不同的浏览器并尝试检查相同的元素,您会注意到这一点。

您可以尝试使用类名“draggable-demo-product jqx-rc-all jqx-draggable”找到所有元素,然后添加所需的元素。

在以下示例中,添加了所有元素:

    //WebElement source = driver.findElement(By.xpath(".//*[@id='jqxWidgete3128591f541']"));
    WebElement source = driver.findElement(By.xpath("//div[@id='shop']"));
    List<WebElement> listDraggableElement=source.findElements(By.xpath("//div[@class='draggable-demo-product jqx-rc-all jqx-draggable']"));

    WebElement target = driver.findElement(By.xpath(".//*[@id='cart']"));
    Actions actions = new Actions(driver);
    for(WebElement el: listDraggableElement)
    {
        System.out.println(el.getText());
        actions.dragAndDrop(el, target).build().perform();
    }