Ответ 1
с помощью javascript-исполнителя, например
((JavascriptExecutor) webdriver).executeScript("document.getElementById('btn').click();");
На моей странице HTML есть невидимый элемент, который становится видимым, когда на элементе мыши наведен курсор мыши. Что мне нужно сделать, это
Я использую Java API для веб-драйвера selenium, и вот что я пытался
Actions builder = new Actions(driver);
builder.moveToElement(MainMenuBTN).click().build().perform();
subMenuBTN.click();
Что происходит, щелчок() на MainMenuBTN генерирует исключение ElementNotVisible. Я пробовал следовать, чтобы избежать этого, но не работал.
Actions builder = new Actions(driver);
builder.moveToElement(mainMenuBTN).build().perform();
builder.click();
subMenuBTN.click();
A Примечание: mainMenuBTN и subMenuBTN являются WebElements, сгенерированными
driver.findElement(By.xpath("xpath_string"))
Я что-то пропустил? Помогите оценить!
с помощью javascript-исполнителя, например
((JavascriptExecutor) webdriver).executeScript("document.getElementById('btn').click();");
Хорошо, много раз повторяя ваши вопросы и меняя свои ответы, я поеду -
Проблема - что я получил от исходного кода -
Вам нужно переместить курсор в mainMenuBTN (который невидим, а не тот элемент, который становится видимым при наведении указателя мыши на него), и затем отображается subMenuBTN, который вам нужно щелкнуть.
Единственное редактирование исходного кода по умолчанию - это добавить оператор, чтобы переместить курсор на ваш subMenuBTN, прежде чем щелкнуть его. Этот способ отлично подходит для меня, когда мне нужно щелкнуть элемент подменю.
Actions builder = new Actions(driver);
builder.moveToElement(mainMenuBTN).build().perform();
builder.moveToElement(subMenuBTN).build().perform();
subMenuBTN.click();
Пожалуйста, дайте мне знать, если это так.
Создатель ваших действий выглядит несколько неправильно. Вот пример, который я использую:
public static void mouseClickByLocator( String locator ) {
WebElement el = driver.findElement( By.cssSelector( locator ) );
Actions builder = new Actions(driver);
builder.moveToElement( el ).click( el );
builder.perform();
}
Actions builder = new Actions(driver);
builder.MoveToElement(menu).MoveToElement(submenu).Click().Perform();
Он работает под Chrome, но не работает в FF