Java+;Selenium:ElementNotVisibleException

Java+;Selenium:ElementNotVisibleException,java,selenium,xpath,Java,Selenium,Xpath,我在EBays的高级上传工具(URL:)上。我点击黄色框“点击添加照片-需要第一张照片”-我可以使用XPath“/*[@id='upl-fileInp']”上传第一张照片

我在EBays的高级上传工具(URL:)上。我点击黄色框“点击添加照片-需要第一张照片”-我可以使用XPath
“/*[@id='upl-fileInp']”上传第一张照片
“//input[contains(@class,'upl-fileInp')]”“我在Selenium中得到元素不可见异常。我理解错误的来源,但我没有看到元素不可见。我尝试了许多不同的XPath变体,但都没有成功。我尝试过webdriver等待,但也不起作用。HTML代码是:

<li kp="1" data="">
<span class="tg-li">
<div class="thumb" style="border: 1px solid rgb(255, 255, 255);">
<div class="disableLyr" style="display: none;"/>
<a class="del" title="delete"/>
<div class="guide">
<div class="throb">
<a class="addPicBtn" style="display: block;">
<i/>
<b>Add photos</b>
<input id="upl-11450764546022" class="upl-fileInp" type="file" multiple="" title="Select photos" value="" name="d"/>
</a>
<div class="picIcon" style="display: none;"/>
<a class="genericError" tabindex="0" style="border: 1px solid rgb(255, 255, 255);">
</span>
</li>
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li kp="1" data="">
<li class="last" kp="1" data="">
</ul>
<div id="tg-mainPicPnl" tabindex="-1">Main photo</div>
</div>
<div class="arrow rt">
</div>
<!-- TODO: Remove. Replaced by BubbleText. ******************************************* Thumbnails gallery tooltip *********************************************** <div id="tg-tooltip"><div class="ptr"></div><div class="msg"><div class="pad"><span class="hdg"></span><b>:</b><span class="bdy"></span><div class="hide"></div></div></div></div>-->
<!--******************************************* BubbleText ***********************************************-->
<div id="bt-bubbleTextTmp" class="puBubbleText">
<div id="up-uploadBtnWrap" style="display: inline-block;">
</form>
</div>
<!--
  • 添加照片
  • 主要照片
    虽然这不是一个很好的选择,但是试着使用
    睡眠
    ,这样你就会知道你的问题是否在等待解决。比如说

    sleep(5)
    

    虽然这不是一个很好的选择,但是试着使用
    睡眠
    ,这样你就会知道你的问题是否在等待解决。比如说

    sleep(5)
    

    使用显式等待更合适,在尝试单击特定元素之前,请尝试等待该元素。比如:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(
            ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[contains(@class,'upl-fileInp')]")));
    
    element.click();
    

    使用显式等待更合适,在尝试单击特定元素之前,请尝试等待该元素。比如:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(
            ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[contains(@class,'upl-fileInp')]")));
    
    element.click();
    

    你能分享你的测试代码吗?你能分享你的测试代码吗?