我的问题关于xpath在Selenium上不起作用

时间:2018-11-05 16:59:43

标签: java selenium selenium-webdriver xpath selenium-chromedriver

我正尝试使用Selenium的xpath从网站上下载特定日期的文件,如下所示。我正在用它从网站表单中找到我想要的链接。

driver.findElement(By.xpath("//tr[td[contains(.,'10/30/2018')] and @class='Row ']//span")).click();

当我使用xpath在Chrome浏览器中直接搜索HTML时,它给了我想要的结果。但是,如果我在Java程序中使用Selenium的xpath(Web驱动程序是Chrome的)来查找元素,则会收到“无此类元素异常”。我尝试使用

来等待网页加载的时间更长
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

但这没用。

谁能告诉我为什么?

我看到链接位于“ iframe”标签中。是我应该首先处理的事情吗?

网络结构基本上是这样

<tr>
  <tr class="Row ">
    <td>10/30/2018 9:00:00 PM<td>
    <td>
      <span>
        <input type="submit" value="Download"></input>
        <input type="hidden"></input>
      </span>
    </td>
  </tr>
  <tr class="Row ">
    <td>10/27/2018 9:00:00 PM<td>
    <td>
      <span>
        <input type="submit" value="Download"></input>
        <input type="hidden"></input>
      </span>
    </td>
  </tr> 
</tr> 

我也尝试过,但是没用。

driver.findElement(By.xpath("//tr[td[contains(.,'10/30/2018')] and @class='Row ']//input[@type='submit']")).click();

1 个答案:

答案 0 :(得分:0)

我的问题解决了。我找不到该元素的原因是它在iframe代码中。这意味着它是当前网站内的另一个网站。为了解决这个问题,我需要先使用switchTo功能访问该网站,然后我才能对其进行处理。

driver.switchTo().frame(driver.findElements(By.tagName("iframe")).get(0));