我正试图使用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"标签中。这是我应该先处理的事情吗?
web结构基本上与类似
<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();
我的问题解决了。我找不到元素的原因是它在iframe标记中。这意味着它是当前网站中的另一个网站。为了处理这个问题,我需要使用switchTo功能先去那个网站,然后我才能处理它
driver.switchTo().frame(driver.findElements(By.tagName("iframe")).get(0));