我遇到了这个特定链接的问题,因为它是动态的,它没有一个specefic名称或id,但我知道所有这些链接都在一个带有类的span中。我试图得到一个WebElements列表,以获得所有跨越“更多”类的内容,以获得一堆链接,但我得到这个错误:
org.openqa.selenium.WebDriverException: Element is not clickable at point (96, 21). Other element would receive the click: <div class="priceFinderHeaderLogoWrap"></div>
html代码看起来如何:
<span class="more">
<a onclick="setPID(27272);ta.fireEvent('hotels_lists_engagement_tracking.fired', {type: 'ReviewCount', element: this});ta.setEvtCookie('Reviews', 'ReviewCount', '1461750', 1, '/Hotel_Review');" target="_blank" href="/Hotel_Review-g150800-d1461750-Reviews-City_Express_Plus_Reforma_El_Angel-Mexico_City_Central_Mexico_and_Gulf_Coast.html#REVIEWS">254 opiniones</a></span>
我的java代码:
List<WebElement> links = driver.findElements(By.className("more"));
System.out.println(links.isEmpty());
for (int i = 0; i < links.size(); i++) {
links.get(i).click();
// do something in the web page...
}
答案 0 :(得分:1)
试试这个
List<WebElement> links = driver.findElements(By.XPath("//span[@class='more']/a"));
答案 1 :(得分:1)
根据提供的信息,链接是动态的,内部跨度与类更多。所以在您尝试的代码中
List<WebElement> links = driver.findElements(By.className("more"));
要求加载所有跨度的mebelements但实际上你需要链接吗?
因此,如果您需要在课程中加载特定范围内的所有链接,请尝试以下
List<WebElement> links = driver.findElements(By.xpath("//span[@class='more']/a"));
前提是该页面包含您尝试获取链接的唯一范围。然后选择&#39; for&#39;循环并单击链接。
如果仍然遇到同样的问题,请使用Actions点击元素。例如下面的
for(int i=0; i<links.size(); i++){
new Actions(driver).moveToElement(links.get(i)).click().build().perform();
}
如果您打算按照您尝试的代码点击跨度,请尝试按上述操作退出例外。
请注意,当您执行点击时可能会出现stealelement异常,这可能导致页面加载并且驱动程序在for循环中放松了对收集的webelements的引用。
谢谢你, 穆拉利