我收到一个错误“元素无法通过键盘访问”你们可以帮助我吗?我只是想附上PDF文件,但随着它的出现,我无法找到点击它或上传文件。
代码是: -
WebElement uploadElement = driver.findElement(By.xpath("//*[@id=\"registerproduct\"]/div/div[4]/div/div/div/div[2]/div[2]/div/div/span/label"));
uploadElement.sendKeys("C:\\Users\\Rahul\\Downloads\\kemgo-auction-detail-574.pdf");
Html是: -
<div class="col s12">
<div class="file-field input-field">
<div class="">
<input id="btn_myFileInput" onchange="checkimagetype()" name="productsheet" style="display:none;" type="file">
<span class="attached sp_head">
<label for="btn_myFileInput" class="gray-lite attach_circle left">
<i class="fa fa-paperclip small"></i>
</label>
<span class="sp_head">
Attach specification sheet </span>
<span id="fileinput-msg"></span> </span>
</div>
</div>
你们可以帮我上传文件吗?谢谢
根据您共享的HTML和代码试验,传递文件路径的WebElement不是<label>
标记。你应该定位<input>
标签。另外,<input>
标签的style属性设置为display:none;。您可以使用以下代码块上传文件:
WebElement uploadElement = driver.findElement(By.xpath("//input[@id='btn_myFileInput']"));
((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('style')", uploadElement);
uploadElement.sendKeys("C:\\Users\\Rahul\\Downloads\\kemgo-auction-detail-574.pdf");
这是我的解决方案,我认为它可以解决其他情况。我将清楚地解释我的代码
driver.executeScript("return document.readyState").equals("complete"); WebElement uploadImage = driver.findElementByXPath("*<your_xPath_element>*"); String scriptOn = "arguments[0].setAttribute('style','display: block')"; driver.executeScript(scriptOn, uploadImage); uploadImage.sendKeys("*<your_image_URL>*"); String scriptOff = "arguments[0].setAttribute('style','display: none')"; driver.executeScript(scriptOff, uploadImage);
说明:
前提:
司机:FFDriver
语言:Java
脚步:
第1行:因为它是一个隐藏的元素所以你不知道它何时出现=>那你为什么需要等待满载的页面
第2行:定义你想要检测的元素,不要担心它无法检测到我的xPath:// input [@ accept ='image /'] *
第3行:为Style属性定义新值,如您所期望的那样示例URL =“path / 01.png”
第4行:执行命令元素的当前样式=新值('style','display:block')=>它使隐藏的元素显示
第5行:现在你的期望元素是show,所以你可以发送密码(图片URL)
第6 + 7行:将原始状态返回到此元素