我尝试将内容拖放到selenium中的search-textbox中,但它执行了拖动操作,但没有将其拖放到www.example.com中search-textbox.so我的问题是如何拖放到textbox中。
driver.get("http://stackoverflow.com/questions/42159265/drag-and-drop-content-into-textbox-by-using-selenium");
WebElement from = driver.findElement(By.xpath("//*[@id='qinfo']/tbody/tr[1]/td[2]/p/b"));
Actions builder = new Actions(driver);
builder.doubleClick(from).perform();
Thread.sleep(1000);
WebElement to = driver.findElement(By.name("q"));
Action dragAndDrop = builder.clickAndHold(from).moveToElement(to).release(to).build();
dragAndDrop.perform();
4条答案
按热度按时间91zkwejq1#
首先,WebDriver/Selenium DragAndDrop似乎不再工作了,充其量它在工作和不工作之间徘徊,这取决于驱动程序,浏览器和Selenium的发布。我没有发现任何Java变通方案实际上工作。
在浏览了下面提到的站点之后,我制作了一个Java示例。
Elemental Selenium Drag N Drop-用于测试拖放的示例应用rcorreia/drag_and_drop_helper.js- rcorreia的javascript助手代码
RomanIsko/elemental-selenium-tips-csharp实现
通过查看romanisko csharp代码,我知道了如何集成javascript文件。
从上面我想到了下面的Java解决方案:
DragAndDropJsHelper.java
我网站的一部分DragAndDropTest.java
注意:使用drag_and_drop. js需要src和dst是css选择器字符串,我不知道xpath是否可以工作。如果它可以处理WebElement和/或BY作为输入参数,那就更好了。不幸的是,我的javascript不够深,无法进行这样的修改。
另见:
Selenium Actions drag and drop not working on chrome browser
Drag and drop support for an object via Gwen DSL
sirbozc52#
所以这件事让我疯狂了几天,但我已经找到了答案。
拍了个视频
https://www.youtube.com/watch?v=hOprGzKBD9I&feature=youtu.be
用文字/代码解释需要做什么
1 -您需要导入一个外部JS文件resources/drag_and_drop. js 2 -在您需要运行make之后,创建一个将执行JS的函数
下面是我的-
mrfwxfqh3#
您可以尝试:
fnvucqvd4#
显然,这适用于某些情况(当使用HTML5可拖动属性时)。https://elementalselenium.com/tips/39-drag-and-drop
这是我的解决方案,我修改了javascript文件一点,所以它将使用
executeScript
可选args
,而不使用字符串串联。有了这个,你现在可以简单地用参数调用它:
摘自Java测试方法:
希望这能帮到什么人。