我在Selenium Webdriver中遇到问题。
我需要上传一个网站的文件。下面是我的尝试:
driver.findElement(By.cssSelector(".icon-upload-cloud"))
.sendKeys(
"C:" + File.separator +
"Users" + File.separator +
"Vinicius" + File.separator +
"OneDrive" + File.separator +
"Arquivos para códigos" + File.separator +
"Logo empresa.png"
);
问题是上传按钮返回错误:"element is not reachable by keyboard"
.
我可以解决这个问题:
new WebDriverWait(driver, 20)
.until(
ExpectedConditions.elementToBeClickable(
By.cssSelector(".icon-upload-cloud")
)
)
.click();
但是我不知道如何上传文件,因为Windows打开一个文件选择对话框,我不能使用sendKeys()
。
"键盘无法访问的元素"
的意思完全一样你不能用键盘
与元素交互我认为你是在与一个按钮元素而不是'input'元素交互
如果你想使用send_keys上传,你应该发送到input标签的元素,其显示属性不是none,并且没有被禁用
我是这样做的:
WebElement fileupload = driver.findElement(By.cssSelector(".icon-upload-cloud"));
fileupload.click();
StringSelection ss = new StringSelection("C:\Users\Vinicius\OneDrive\Arquivos para códigos\Arquivo de áudio.mp3");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
谢谢你的帮助:)