Наведите указатель мыши только на элемент с помощью Selenium - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь просто навести курсор на элемент, используя код Selenium. Элемент появляется на веб-странице, и он активен.

Я получаю эту ошибку:

javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite. (Session info: chrome=80.0.3987.132) Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03' System info: host: 'TALANGEL-LP', ip: '172.17.17.148', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_152-release' Driver info: org.openqa.selenium.chrome.ChromeDriver

Мой код:

WebDriverWait wait = new WebDriverWait(browser,3);
elementToHoverOn = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("button[id='MyBtn']")));
new Actions(browser).moveToElement(elementToHoverOn).perform();

Даже если я пытаюсь найти элемент просто используя By.ID я получаю ту же ошибку. Я видел в других потоках, что элемент должен быть указан c, и это так.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 17 марта 2020

presenceOfElementLocated() не гарантирует, что элемент видим . Вместо этого вам нужно вызвать WebDriverWait для visibilityOfElementLocated(), и вы можете использовать любую из следующих стратегий локатора :

  • cssSelector:

    new Actions(browser).moveToElement(new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button#MyBtn")))).build().perform();
    
  • xpath:

    new Actions(browser).moveToElement(new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[@id='MyBtn']")))).build().perform();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...