我正在努力拖延但它不起作用。
这是我的代码。
请帮忙,我已经花了很多时间在这上面,但它仍然没有用。
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();
}
}
答案 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();
}