0

我正在尝试使用 Selenium 在使用 ajax 和/或 jquery 加载的页面上查找 webElement。

似乎无论我做什么,都找不到该元素。

我正在使用 Firefox 20 和 Selenium 2.31.0。

我试图获取的那个部分的 html 看起来像这样(我使用 firefox 中的 Inspector Tool 得到了这个):

 <form id="file_upload" method="post" enctype="multipart/form-data" action="myAction.php">
    <table class="table table-striped">
      <tbody>
        <tr>
          <td>
            <input class="input-file" type="file" name="file"></input>
            <input class="btn btn-primary" type="submit" value="upload"></input>
          </td>
          <td style="text-align:right;"></td>
        </tr>
      </tbody>
    </table>
  </form>

我努力了:

WebDriverWait driverWait = new WebDriverWait(driver, 10000);

WebElement dynamicElement =  driverWait.until(ExpectedConditions.presenceOfElementLocated(By.id("file_upload")));

System.out.println(dynamicElement.getText());

我试过了:

WebElement dynamicElement = new FluentWait<WebDriver>(driver).withTimeout(1,  TimeUnit.MINUTES).pollingEvery(1, TimeUnit.SECONDS)
    .ignoring(NoSuchElementException.class).until(ExpectedConditions.visibilityOfElementLocated(By.id("file_upload")));

System.out.println(dynamicElement.getText());

但是我尝试的任何东西都找不到它,或者无论我给它多少时间来找到那个元素都会超时。任何帮助将非常感激。谢谢你。

4

2 回答 2

1
// to make sure you are in the default content
// this is not necessary in the most of the cases
driver.switchTo().defaultContent(); // use only if you are in a frame already

driver.switchto().frame("framename or id");
//driver.switchto().frame(driver.findElement(By.xpath("frame locator")));
//driver.switchto().frame(zero-based frameindex);

// now in the frame
WebDriverWait driverWait = new WebDriverWait(driver, 10000);
WebElement dynamicElement = driverWait.until(ExpectedConditions.presenceOfElementLocated(By.id("file_upload")));
System.out.println(dynamicElement.getText());

// if you want to get out of all frames back to default content
driver.switchTo().defaultContent();
于 2013-04-17T09:38:04.590 回答
0

尝试升级 Selenium。不确定它是否是唯一的问题,但Selenium 2.32.0支持 FF 20 。

Selenium 历史- 页面底部的注释显示 FF 20 支持。

于 2013-04-16T18:20:20.067 回答