【发布时间】:2020-10-02 19:35:39
【问题描述】:
我有一个 html 页面,其中的部分结构如下:
<section id="fl-results" class="fl-results-revenue">
<li data-tab="details" class="ui-state-default ui-corner-top" role="tab">
<a class="toggle-flight-block-details ui-tabs-anchor" href="#flight-details-1" tabindex="-1" id="ui-id-3">Details</a>
</li>
<!-- Some html -->
<li data-tab="details" class="ui-state-default ui-corner-top" role="tab">
<a class="toggle-flight-block-details ui-tabs-anchor" href="#flight-details-2" tabindex="-1" id="ui-id-5">Details</a>
</li>
<!-- Some html -->
<li data-tab="details" class="ui-state-default ui-corner-top" role="tab">
<a class="toggle-flight-block-details ui-tabs-anchor" href="#flight-details-3" tabindex="-1" id="ui-id-8">Details</a>
</li>
<!-- Some html -->
<li data-tab="details" class="ui-state-default ui-corner-top" role="tab">
<a class="toggle-flight-block-details ui-tabs-anchor" href="#flight-details-4" tabindex="-1" id="ui-id-19">Details</a>
</li>
</section>
现在我想单击带有 id fl-results 部分的所有链接以获取详细信息。 在我的代码中,我等待元素可点击,这正在工作,然后尝试全部点击:
wait.until(ExpectedConditions.elementToBeClickable(By.className("toggle-flight-block-details")));
当我尝试下面的代码时,它只会打开第一次出现的链接:
driver.findElement(By.className("toggle-flight-block-details")).click();
我看到一个帖子建议使用 cssSelector
driver.findElement(By.cssSelector("a[href*='flight-details-1']")).click();
这需要我遍历所有具有此类的链接。迭代有效,但点击给我一个错误
//loop through page and click all link details
List<WebElement> allLinksWebpage = driver.findElements(By.className(waitCondition));
int k = allLinksWebpage.size();
for(int i=0;i<k;i++)
{
if(allLinksWebpage.get(i).getAttribute("href").contains("flight-details"))
{
String waitCondition = "flight-details-"+(i+1);
String link = allLinksWebpage.get(i).getAttribute("href");
driver.findElement(By.cssSelector("a[href*='"+waitCondition+"']")).click();
}
}
给出的错误是:
线程“main”中的异常 org.openqa.selenium.ElementClickInterceptedException:元素点击 截获:元素 ... 在点 (392, 730)。其他元素会收到点击:...
我看到了一个关于类似错误的post,它说要改用javascript,因为它与chrome有关,但我不知道如何在我的情况下实现它?
我正在使用谷歌浏览器驱动程序版本 83.0.4103.97。
我正在查看的 HTML 页面是来自 United Airline 的航班搜索结果
【问题讨论】:
标签: java selenium selenium-webdriver web-scraping selenium-chromedriver