一尘不染

Selenium Webdriver-单击隐藏的元素

selenium

我正在尝试自动执行Google云端硬盘中的上传文件功能。

用于传递参数的元素以高度-0px隐藏。

用户操作均不会使该元素可见。因此,我需要一种变通方法来在不可见的元素上单击。

<input type="file" style="height: 0px; visibility: hidden; position: absolute; width: 340px; font-size: inherit;" multiple=""/>

上述元素的xpath是-

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

我在用

WebDriver.findElement(By.xpath(<xpath>).sendKeys(<uploadFile>)

例外-

org.openqa.selenium.ElementNotVisibleException
  • 元素当前不可见,因此可能无法与之交互。

我尝试使用JavascriptExecutor。但是找不到确切的语法。


阅读 502

收藏
2020-06-26

共1个答案

一尘不染

试试这个:

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("<LOCAL FILE PATH>");

请注意,通过更改输入字段的可见性,您可以干预要测试的应用程序。注入脚本来改变行为是侵入性的,在测试中不建议这样做。

2020-06-26