我收到错误“键盘无法访问元素”你们可以帮助我吗?我只是想附上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>
你们可以帮我上传文件吗? 感谢
答案 0 :(得分:1)
根据 HTML 您已共享和代码试用 WebElement 传递文件路径不是<label>
标签。您应该定位<input>
标记。此外,<input>
代码的样式属性设置为 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");
答案 1 :(得分:0)
这是我的解决方案,我认为它可以解决其他情况。我会清楚地解释我的代码
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行:执行命令元素的当前样式=新值(“样式”,“显示:块”) =>它使隐藏的元素显示出来
第5行:现在显示了您的期望元素,因此您可以向其发送键(图像URL)
第6 + 7行:将原始状态返回到该元素
答案 2 :(得分:0)
当longlist
style="display:none;"
当 public void makeInputElementVisible(){
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.getElementById('your_element_id').style.display='block';");
}
style="display:none;"