【问题标题】:strange Selenium2 No Such Element error奇怪的 Selenium2 没有这样的元素错误
【发布时间】:2014-03-24 15:10:20
【问题描述】:

我有这个 HTML 代码。

`<div> <i class="icon-plus icon-white"></i>
    <span>                                  
        <input type="file" multiple="multiple" name="uploadFile" value="Attach2" id="1309261001000145" style="visibility:hidden;position:absolute;top:0;left:0">  <input type="button" onclick="fireFileButton('1309261001000145')" value="Attach" name="input"  class="btn_grn btn_sm">
    </span>                                         
 </div>`

该 div 位于一个普通的嵌套 div 中。第二个是显示的“附加文件”,一旦点击,“fireFileButton”功能将点击第一个表单(隐藏在左上角0,0位置)。然后会出现一个弹出窗口,类型为“文件”以选择要上传的文件和要上传的 ajax。

我将使用 Selenium2 来模拟文件上传过程。 我使用以下代码:

 WebElement attach = (new WebDriverWait(driver, 15)).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("//input[name^='input']")));
 attach.click();
 WebElement upload = (new WebDriverWait(driver, 15)).until(ExpectedConditions.presenceOfElementLocated(By.id("1309261001000145")));
 upload.sendKeys("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg");

我也尝试在第一个元素上直接使用 sendKeys 函数。但是对于 first 和 second 都有 NO SUCH ELEMENT 的错误。我使用了 By.id,name,cssSelector,xpath 但无济于事。

可以使用 javascript 选择元素。

非常感谢任何建议。

【问题讨论】:

    标签: selenium-webdriver


    【解决方案1】:
    By.cssSelector("//input[name^='input']")
    

    选择器不应包含//,因此将上面的替换为:

    By.cssSelector("input[name='input']")
    

    You can refer this to know more about Selectors.

    【讨论】:

    • 谢谢,但我认为这不是这种语法错误。我试过按 id、name、xpath 选择,都无济于事。我什至尝试使用executeScript通过js进行选择,但还是找不到。
    【解决方案2】:

    首先检查:ID 标签。

    输入按钮的 ID 似乎是动态的。所以我们无法通过 ID 访问。

    第二次检查:NAME 标签。

    我们可以使用,因为它有一个名字。

    WebElement attach = driver.findElement(By.Name("input"));
    
    attach.click();
    

    如果没有点击,请使用操作。

    Actions action = new Actions(driver);
    
    action.moveToElement(attach).click().perform();
    

    您不能直接使用 sendkeys 传递值进行文件上传。

    查看此页面以获取我的解决方案,以便通过文件上传访问:How to handle Windows file browse window using selenium webdriver

    【讨论】:

    • 感谢分享。但如果找不到该元素,则附加将为空。我终于通过执行一段javascript代码解决了这个问题。
    猜你喜欢
    • 2017-12-08
    • 2017-06-08
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2021-07-29
    相关资源
    最近更新 更多