离开页面后如何防止selenium webdriver对象变得陈旧?

时间:2016-07-05 20:48:47

标签: python selenium

我遇到了一个棘手的问题,试图废弃一个填充ajax的网站。经过多次努力,我已经能够自动化浏览器从网站上下载单个文件。不幸的是,手头的任务要求我离开主页面才能到达文件。我的问题是,在获得驱动程序对象列表后,一旦我离开页面,它就会变得陈旧。我试图通过将索引存储为整数来解决这个问题。以下是我的代码:

while loop:
    open_folders()
    drFolder = driver.find_elements_by_xpath("//*[@data-rights='16777215']")
    drSurveys = driver.find_elements_by_xpath("//*[@data-rights='16711680']")
    inner_loop(create_list(drFolder, drSurveys), accum)
    accum += 1

1 个答案:

答案 0 :(得分:0)

我可以通过使用map函数更新列表来解决这个问题:

    while loop:
    open_folders()
    drSurveys = driver.find_elements_by_xpath("//*[@data-rights='16711680']")
    elecontainer = driver.find_elements_by_xpath("//*[@data-rights='16711680']")
    map(lambda: driver.find_elements_by_xpath("//*[@data-rights='16711680']"), elecontainer)
    if elecontainer[accum].is_displayed():
        ActionChains(driver).move_to_element(elecontainer[accum]).click(elecontainer[accum]).perform()
        if check_jquery():
            inner_loop()
    accum += 1

我没有任何匿名功能或地图功能的经验。 我后来回去更新它:

    while loop:

    open_folders()

    elecontainer = driver.find_elements_by_css_selector("a[data-rights^='167']")

    map(lambda: driver.find_elements_by_css_selector("a[data-rights^='167']"), elecontainer)

    if elecontainer[accum].is_displayed():

        ActionChains(driver).move_to_element(elecontainer[accum]).click(elecontainer[accum]).perform()

        if check_jquery():

            urlstore = driver.current_url

            inner_loop()

    accum += 1