首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StaleElementReferenceException selenium webdriver

StaleElementReferenceException selenium webdriver
EN

Stack Overflow用户
提问于 2014-09-21 07:53:02
回答 1查看 377关注 0票数 1

我正在使用Selenium、Python和PhantomJS编写一个爬虫来使用谷歌的反向图像搜索。到目前为止,我已经成功地上传了一张图片,并在第一页上抓取搜索结果。但是,当我试图点击搜索结果导航时,我得到了一个StaleElementReferenceError。我在很多帖子中读到过这个问题,但我仍然无法实施解决方案。以下是破解的代码:

代码语言:javascript
复制
ele7 = browser.find_element_by_id("nav")
ele5 = ele7.find_elements_by_class_name("fl")

count = 0
for elem in ele5:
    if count <= 2:
        print str(elem.get_attribute("href"))
        elem.click()
        browser.implicitly_wait(20)
        ele6 = browser.find_elements_by_class_name("rc")
        for result in ele6:
            f = result.find_elements_by_class_name("r")
            for line in f:
                link = line.find_elements_by_tag_name("a")[0].get_attribute("href")
                links.append(link)
                parsed_uri = urlparse(link)
                domains.append('{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri))
            count += 1 

代码在打印str(elem.get_attribute("href"))时中断。我怎么才能解决这个问题?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-21 08:01:50

单击链接将导致浏览器转到另一页;使对旧页中的元素(ele5elem)的引用无效。

修改代码以不引用无效元素。

例如,您可以在访问其他页面之前获得urls:

代码语言:javascript
复制
ele7 = browser.find_element_by_id("nav")
ele5 = ele7.find_elements_by_class_name("fl")

urls = [elem.get_attribute('href') for elem in ele5]  # <-----

browser.implicitly_wait(20)

for url in urls[:2]:  # <------
    print url
    browser.get(url)  # <------ used `browser.get` instead of `click`.
                      #         ; using `element.click` will cause the error.

    ele6 = browser.find_elements_by_class_name("rc")
    for result in ele6:
        f = result.find_elements_by_class_name("r")
        for line in f:
            link = line.find_elements_by_tag_name("a")[0].get_attribute("href")
            links.append(link)
            parsed_uri = urlparse(link)
            domains.append('{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25957063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档