Как переместить указатель мыши и щелкнуть с помощью Selenium Webdriver JavaScript? - PullRequest
0 голосов
/ 17 декабря 2018

Я новичок в селене, и у меня возникают проблемы с простыми задачами.

Я пытаюсь навести указатель мыши на определенную область (координаты x, y) на странице и затем нажать, но безуспешно.Я прочитал документацию и использую {bridge: true} из-за chromewebdriver.

Вот мой код:

var webdriver = require('selenium-webdriver'),
  By = webdriver.By,
  until = webdriver.until,
  Origin = webdriver;


var driver = new webdriver.Builder()
  .forBrowser('chrome')
  .build();


driver.get('http://www.localhost:4000/');

var actions = driver.actions({ bridge: true });

actions.mouse().move({x: 400, y: 1100, duration: 2000, origin: Origin.VIEWPORT});

Другой вопрос.Я знаю, что есть четвертый параметр origin origin: Origin.VIEWPORT, однако я не знаю, правильно ли я его импортировал.

Я также не знаю, как вызвать событие click, посколькуУ меня нет ни одного выбранного элемента.Я хочу щелкнуть в окончательном положении указателя мыши.

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Кажется, что вам не хватает .perform();.

Классический способ сделать это - Транспортир

 // Instead of specifying an element as the target, you can specify an offset
// in pixels. This example double-clicks slightly to the right of an element.
browser.actions().
    mouseMove(element).
    mouseMove({x: 50, y: 0}).
    doubleClick().
    perform();

Вы можете использовать mouseMoveк xy элемента body.

Надеюсь, это поможет вам!

EDIT

Если это не сработает, попробуйте что-то подобное:

browser.actions() .mouseMove(element, { x: 20, y: 75, }) .perform().then(() => browser.actions() .click() .perform());
0 голосов
/ 11 марта 2019

его работы для меня

//定位一個按鈕
WebElement button = driver.findElement(By.xpath("//div[@class='page-button']"));
//new 一個移動滑鼠的物件
Actions clickAction = new Actions(driver).click(button);
//執行
clickAction.build().perform();
0 голосов
/ 18 декабря 2018
WebDriver driver = new FirefoxDriver();
JavascriptExecutor scpt = (JavascriptExecutor)driver;
scpt.executeScript("document.getElementById('[insert id]').click();");

Убедитесь, что вы добавили таймер сна, чтобы он мог загружать страницу, а затем могли нажать потом, поэтому используйте Thread.Sleep();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...