我正在尝试自动执行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。但是找不到确切的语法。
试试这个:
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>");
请注意,通过更改输入字段的可见性,您可以干预要测试的应用程序。注入脚本来改变行为是侵入性的,在测试中不建议这样做。