为了避免上传文件的窗口对话框,我尝试了以下内容:
driver.findElement(By.xpath("//span[@class='ab-attachment-item']/input")).sendKeys(filePath);
以下是HTML代码段:
<div class="ab-attachments">
<span class="ab-attachment-item" ng-hide="isReadOnly()" style="background-color: transparent;">
<input class="ab-attachment-input ng-isolate-scope firefinder-match" type="file" rx-file-upload="file" accept=".pdf,image/*" style="background-color: transparent;">
但它导致错误:
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
我想确认此错误是由于ng-hide="isReadOnly()"
代码中的span
造成的吗?
如何使用Selenium WebDriver本身(使用JavaScriptExecutor或其他东西)来解决这个问题?
为了处理这个对话框,可以使用其他工具,如Sikuli,AutoIt;但我想避免这种开销。
答案 0 :(得分:0)
你应该可以这样做:
driver.findElement(By.className("ab-attachment-input ng-isolate-scope firefinder-match")).sendKeys(filePath);
如果没有尝试在尝试sendKeys
Int timeoutInSeconds = 10;
WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ab-attachment-input ng-isolate-scope firefinder-match"));
答案 1 :(得分:0)
//我会使用隐式等待并直接调用输入元素
new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[rx-file-upload='file'][accept=".pdf,image/*"]"))).sendKeys("filePathWithExtension");