【问题标题】:cant click button which opens file attachment dialog无法单击打开文件附件对话框的按钮
【发布时间】:2011-06-07 17:05:53
【问题描述】:

我正在使用 selenium 2 beta。我正在尝试单击打开文件附件对话框的按钮。但是当我点击它时没有任何反应。

<input class="zf" name="Passport" id="PassportUpload" type="file" onclick="return { oRequired : {} }" maxlength="524288"> 


driver.findElement(By.name("Passport")).click();

只使用 selenium 而不是 selenium 2 我可以轻松点击它。

【问题讨论】:

    标签: selenium automated-tests webdriver selenium-webdriver


    【解决方案1】:

    我猜这个问题只出在使用 Internet Explorer 时,因为 IE 和 FF 处理文件输入略有不同:在 FF 中,您可以单击按钮或字段来调用“打开”对话框,而在 IE 中,您可以单击按钮或双击字段。

    WebDriver 使用本机事件,因此它将本机鼠标单击发送到文件输入控件,该控件被转换为对输入字段的单击。

    它在 Selenium 1 中工作,因为它使用 JavaScript 来触发事件。要使其在 WebDriver 中运行,您需要调用 JavaScript:

    WebElement upload = driver.findElement(By.name("Passport"));
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
    

    但是上面的代码不会在 Firefox 中,所以你可以使用类似的东西:

    WebElement upload = driver.findElement(By.name("Passport"));
    if (driver instanceof InternetExplorerDriver) {
        ((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
    } else {
        upload.click();
    }
    

    【讨论】:

      【解决方案2】:

      也许可以试试下面的代码:

      WebElement upload = driver.findElement(By.name("Passport"));
      if (driver instanceof InternetExplorerDriver) {
          ((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
      } else if (driver instanceof FirefoxDriver) {
       ((JavascriptExecutor)driver).executeScript("arguments[0].click;", upload);
      }else {
          upload.click();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多