试图获得:
<a title="Size 11.0" value="11.0" data-modelsize="11_0" data-ssi="false" data-sfs="false" data-backorder="false" class="grid_size in-stock" href="javascript:void(0);">11.0</a>
这个元素在某些时候确实起作用,但现在它返回了这个错误:
无法找到元素: / HTML /体/格[3] / DIV [1] / DIV [2] /部分[2] /部分/形式/ DIV [5] /跨度[1] / A [11]
这不是一个框架,所以我知道这不是问题,只是撞到了一堵砖墙。
有时它会导致无法定位元素错误,有时它会起作用。很混乱。
答案 0 :(得分:-1)
如果没有其他代码,很难说清楚。我的猜测是,这是一个时间问题。单击“大小”按钮时,只需要几分之一秒即可打开...我的猜测是,有时候您在完全打开/可用之前单击。
当选择一个你可能会重复使用的大小的东西时,我会编写一些函数来处理它,以便它可以重复使用。我写了selectSize()
来处理单击“大小”按钮,选择大小,然后等待大小区域关闭。我刚刚测试了下面的代码并且它正在工作。
driver.navigate().to("https://www.footlocker.com/product/model:256325/sku:CQ2011/");
selectSize("11.0");
...和辅助函数
public static void selectSize(String size)
{
driver.findElement(By.id("pdp_size_select_mask")).click();
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("a[value='" + size + "']"))).click();
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("size_selection_container")));
}