Есть ли способ, в котором я могу сделать перетаскивание в селен, используя Node.js? Я использую функцию, показанную ниже, но она не работает.
driver.actions().dragAndDrop(source,destination).perform())
Есть ли способ, в котором я могу сделать перетаскивание в селен, используя Node.js? Я использую функцию, показанную ниже, но она не работает.
driver.actions().dragAndDrop(source,destination).perform())
Прежде всего, вы забыли метод build()
.
Во-вторых, проверьте html-код и найдите, если ваш drag & drop находится в теге Iframe
.
Если это так, вам нужно переключиться на этот iframe.
Так:
driver.switchTo().frame(driver.findElement(By.xpath("PutYourXpathIframe")));
Actions a = new Actions(driver);
WebElement source = driver.findElement(By.id("PutYourSourceId"));
WebElement target = driver.findElement(By.id("PutyourTargerId"));
a.dragAndDrop(source,target).build().perform();
В конце вы можете захотеть вернуться к содержимому по умолчанию:
driver.switchTo().defaultContent();
В качестве обходного пути вы могли бы использовать следующее:
browser.actions()
.mouseDown(element1) //optionally
.mouseMove(source)
.mouseMove(destination)
.mouseUp()
.perform();
На этой странице есть хороший пример того, как это сделать.
var assert = require(‘assert);
var webdriver = require(‘selenium-webdriver),
By = webdriver.By,
until = webdriver.until;
var chrome = require("selenium-webdriver/chrome");
var options = new chrome.Options();
options.addArguments("start-maximized");
options.addArguments("disable-popup-blocking");
options.addArguments("test-type");
var driver = new webdriver.Builder().
withCapabilities(options.toCapabilities()).build();
driver.get(‘http://www.softpost.org/selenium-test-page/);
var e3 = driver.findElement(By.tagName(‘select));
//You can use ActionSequence class to perform actions in selenium
new webdriver.ActionSequence(driver).
keyDown(webdriver.Key.SHIFT).
click(e3).
//dragAndDrop(element3, element4).
keyUp(webdriver.Key.SHIFT).
perform();
//In the same way, you can perform below actions.
//sendKeys, mouseUp , mouseMove, mouseDown, dragAndDrop, doubleClick
driver.sleep(5000);
driver.quit();
//Similarly we can also do touch actions on mobile phones'