当style =“display:none;”时,Selenium上传文件

时间:2018-03-21 06:43:56

标签: java selenium selenium-webdriver webdriver display

我收到错误“键盘无法访问元素”你们可以帮助我吗?我只是想附上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> 

你们可以帮我上传文件吗? 感谢

3 个答案:

答案 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

时,使用元素ID使输入字段可见
style="display:none;"

public void makeInputElementVisible(){ JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("document.getElementById('your_element_id').style.display='block';"); }

时,使用css选择器使输入字段可见
style="display:none;"