Selenium Webdriver - 单击隐藏的元素

pra*_*eel 20 selenium webdriver hidden-field

我正在尝试在Google云端硬盘中自动上传文件功能.

用于传递参数的元素隐藏为height - 0px.

任何用户操作都不会使此元素可见.所以我需要一个工作来点击元素不可见.

<input type="file" style="height: 0px; visibility: hidden; position: absolute; width: 340px; font-size: inherit;" multiple=""/>
Run Code Online (Sandbox Code Playgroud)

上述元素的xpath是 -

//*[@class='goog-menu goog-menu-vertical uploadmenu density-tiny']/input
Run Code Online (Sandbox Code Playgroud)

我在用

WebDriver.findElement(By.xpath(<xpath>).sendKeys(<uploadFile>)
Run Code Online (Sandbox Code Playgroud)

例外 -

org.openqa.selenium.ElementNotVisibleException
Run Code Online (Sandbox Code Playgroud)
  • 元素当前不可见,因此可能无法与之交互.

我尝试过使用JavascriptExecutor.但无法找到确切的语法.

Ash*_*bhu 21

试试这个:

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);
Run Code Online (Sandbox Code Playgroud)

上面的一堆将改变文件输入控件的可见性.然后,您可以继续执行文件上传的常规步骤,例如:

elem.sendKeys("<LOCAL FILE PATH>"); 
Run Code Online (Sandbox Code Playgroud)

请注意,通过更改输入字段的可见性,您将干预正在测试的应用程序.注入脚本以改变行为是侵入性的,不建议在测试中使用.


Kar*_*yan 11

简单方案:

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