WebDriver等待或等效 - 带有属性



我有一个代码段,可以通过使用硒的页面中的链接循环。我已经用WebDriverWait()替换了Time.sleep(3),以尝试加快速度(因为我在50页上运行(,但我无法正常工作。由于某种原因, implicitly_wait(30)无法解决问题。

没有任何Time.sleep()WebDriverWait(),代码在尝试声明变量" Elems"时会生成过时的元素参考错误,因为驱动程序找不到XPATH的任何元素 - 不足为奇 - 毫不奇怪。

我在这里使用的WebDriverWait((解决了该问题,但是随后该代码运行到另一个问题:在嵌套的For-loop的最后一行中,它会引发另一个过时的元素参考错误。看来,尽管WebDriverWait((让代码继续执行时,元素已加载,但这些元素的属性不一定准备就绪。

我的目标是使代码尽可能快地进行,因此Time.Sleep(10(或类似的东西不是很吸引人。如何平滑地确保在继续之前加载所有元素及其属性?为什么可能是隐式_WAIT(30(无法解决此问题?

编辑:有问题的URL:来自http://www.oddsportal.com/baseball/usa/mlb-2017/mlb-2017/results/#/page/1/到http://www.oddsportal.com/basebase.com/basebase.com/basebare/美国/MLB-2017/结果/#/Page/50/

PageRange = range(1, 50)
for page in PageRange:
    URL = "http://www.oddsportal.com/baseball/usa/mlb-" + season + "/results/#/page/" + str(page) + "/"
    driver.get(URL)
    tryElement = EC.presence_of_element_located((By.XPATH, "//a[@href]"))
    WebDriverWait(driver, 30).until(tryElement)
    elems = driver.find_elements_by_xpath("//a[@href]")
    for elem in elems:
        #This line I can't get not to throw a stale element reference 
        link = elem.get_attribute("href") 

根据您提供的参考代码块,您可以使用以下代码块避免StaleElementReferenceException

PageRange = range(1, 50)
for page in PageRange:
    URL = "http://www.oddsportal.com/baseball/usa/mlb-" + season + "/results/#/page/" + str(page) + "/"
    driver.get(URL)
    elems = WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//a[@href]")))
    for elem in elems:
        print(elem.get_attribute("href"))

相关内容

  • 没有找到相关文章

最新更新