Selenium + Python无法定位元素

时间:2018-02-06 15:01:35

标签: python html css selenium

试图获得:

<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]

这不是一个框架,所以我知道这不是问题,只是撞到了一堵砖墙。

有时它会导致无法定位元素错误,有时它会起作用。很混乱。

1 个答案:

答案 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")));
}