Selenium Webdriver – нажмите на скрытые элементы

Я пытаюсь автоматизировать загрузку файлов на Google Диске.

Элемент, используемый для передачи параметров, скрыт с высотой – 0px.

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

 

Xpath для вышеуказанного элемента –

 //*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input 

я использую

 WebDriver.findElement(By.xpath().sendKeys() 

Исключение –

 org.openqa.selenium.ElementNotVisibleException 
  • Элемент в настоящее время не виден и поэтому не может взаимодействовать.

Я пробовал использовать JavascriptExecutor. Но не удалось найти точный синтаксис.

    Попробуй это:

     WebElement elem = yourWebDriverInstance.findElement(By.xpath("//*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input")); String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';"; ((JavascriptExecutor) yourWebDriverInstance).executeScript(js, elem); 

    Вышеупомянутый пучок изменит видимость вашего контроля ввода файлов. Затем вы можете продолжить обычные действия для загрузки файлов, например:

     elem.sendKeys(""); 

    Помните, что, изменяя видимость поля ввода, вы вмешиваетесь в тестируемое приложение. Инъекционные скрипты для изменения поведения навязчивы и не рекомендуются в тестах.

    Простое решение идет здесь,

     WebElement tmpElement= driver.finElement(ElementLocator); JavascriptExecutor executor = JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", tmpElement); 

    Попробуйте этот пример кода:

     JavascriptExecutor executor= (JavascriptExecutor)driver; executor.executeScript("document.getElementById('ID').style.display='block';"); Select select = new Select(driver.findElement(By.id("ID"))); select.selectByVisibleText("value"); Thread.sleep(6000); 

    Используя java-скрипт-исполнитель и сделайте элемент видимым, нажмите на элемент через ID. Надеюсь, что он …

    Вы можете попробовать:

     ((JavascriptExecutor)driver).executeScript("$('.goog-menu.uploadmenu > input').click();"); 

    Попробуй это:

     WebElement elem = yourWebDriverInstance.findElement( By.cssSelector(".uploadmenu > input")); String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';"; ((JavascriptExecutor) yourWebDriverInstance).executeScript(js, elem); 

    Здесь я заменил XPath на CSS Selector. Дайте мне знать. Работает ли вышеупомянутый скриптинг или нет.

    Давайте будем гением компьютера.