1

У меня есть это меню, которое создано Javascript. Я уже пытался найти это меню, используя xpath, но есть ошибка «NoSuchElemetFound». Моя цель здесь - нажать меню, сгенерированное javascript, или выполнить команду меню (например, вы нажмете меню для реального).Selenium Webdriver - Элемент не найден Javascript Сгенерированное меню

Меню находится в теге div, который скрыт.

Вот команда вызывается этим яваскрипта меню:

parent.navFrame.gotoURL('url'); 

Вот мои текущие коды, которые не работают:

WebElement menu = driver.findElement(By.xpath("html/body/span/div[11]/div/div")); 
WebElement parentMenu = driver.findElement(By.xpath("html/body/table/tbody/tr/td[6]/a/img")); 
Actions builder = new Actions(driver); 
builder.moveToElement(parentMenu).moveToElement(menu).click().build().perform(); 

и это

 Actions builder = new Actions(driver); 
     ((HasInputDevices) driver).getMouse(); 
     builder.moveToElement(driver.findElement(By.xpath("html/body/table/tbody/tr/td[6]/a/img"))).build().perform(); 
     driver.findElement(By.xpath("html/body/table/tbody/tr/td[6]/a/img")).isSelected(); 
     Thread.sleep(1000L);  
     builder.moveToElement(driver.findElement(By.xpath(".//*[@id='menuItem101']"))).build().perform(); 
     driver.findElement(By.xpath(".//*[@id='menuItem101']")).click(); 
     Thread.sleep(1000L); 

Пожалуйста, помогите мне , Thanks

ответ

3

Я видел, что webdriver не может вводить скрытые поля, поэтому может быть и тот случай, когда вы также не можете щелкнуть скрытые элементы.

Если это так, потенциальный обходной путь, чтобы выполнить код JavaScript

((IJavaScriptExecutor)driver).ExecuteScript("$('#theDivInQuestion').click()"); 

В приведенном выше примере требует JQuery, но он может быть преобразован в обычный Java Script, если JQuery не доступен на странице

+0

если .click() не работает, попробуйте .show() – cegprakash

0

Меню находится в теге div, который скрыт.

Если элемент скрыт, то WebDriver не может нажмите его.

+0

У вас есть решение? –

+2

@ hybrid_18 Активируйте то, что вам нужно сделать, чтобы сделать его видимым, или выполните часть JavaScript для этого. – alex

0

Даже если меню скрыто, вы можете щелкнуть его по следующему фрагменту.

WebElement we = driver.findElement(By.xpath(xpathtotheELEMENT)); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", we); 
Смежные вопросы