当前位置: 首页 > 知识库问答 >
问题:

为什么我得到了一个StaleElementReferenceException,尽管它在页面上找到了元素?

韩志专
2023-03-14
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
    for link in links:
        #Go to MP3 converter homepage
        self.__driver.get("http://convert2mp3.net/en/")         

        #Type in the video link
        urlinput = self.__driver.find_element_by_id("urlinput") 

        #TEST
        print(str(urlinput))

        self.__action.send_keys_to_element(urlinput, "https://www.youtube.com" + link + Keys.ENTER).perform()
<selenium.webdriver.remote.webelement.WebElement (session="509fc04e4130a25f46f6068684b97a1a", element="0.9812681457094412-1")>
<selenium.webdriver.remote.webelement.WebElement (session="509fc04e4130a25f46f6068684b97a1a", element="0.36225331932442084-1")>

编辑:有人在评论中要求我展示我是如何定义链接的:

    yt_url = req.urlopen(vid_link)
    #Note here that 'sopa' is BeautifulSoup
    yt_page = sopa(yt_url, "html.parser")

    #Get all links
    temp_links = yt_page.find_all("a", href = True)
    links = []

    #Filter playlist to get just the video links
    for l in temp_links:
        if l["href"] not in links and "index" in l["href"] and  l["href"].startswith("/watch"):
            links.append(l["href"])

    return links

共有1个答案

蓬思博
2023-03-14

解决方案:

经过进一步的修修补补,我找到了答案。在for循环中,我确实再次找到了元素,但我没有意识到Selenium希望我也再次更新ActionChain。我已经在构造函数中对其进行了初始化,但是我在for循环开头的正下方添加了以下代码行:

        self.__action = chain.ActionChains(self.__driver)

而且奏效了。

 类似资料:
  • ldd找不到rpath定义中存在的dll。找到了其他一些库(check/./../lib/*) 这里是 ldd 的输出(我们可以看到在 ../lib,但不是自由 root@hyperstream:/DT/local/ADE-trunk4/build-ADE-Desktop-Default/bin#ldd./ade_adminlinux-vdso.so.1= root@hyperstream:/DT

  • 我使用的是SPARK-SQL-2.4.1、SPARK-Cassandra-Connector2.11-2.4.1和java8以及apache Cassandra3.0版本。 我有如下所示的spark-submit或spark集群环境,可以加载20亿条记录。 当我检查日志时,我看到警告com.datastax.spark.connector.writer.QueryExecutor-BusyPool

  • 因为几天前詹金斯的测试被取消了。我在里面得到的错误是: 配置根项目“MyAutomationTests”时出现问题。 未找到名为“测试编译”的配置。 这是我的build.gradle文件: 我们在詹金斯的自动测试一直运行良好,直到几天前。从那时起,它们就不再编译这个问题一开始就给出的错误了。在依赖项代码块中有“实现组”,但我最近将其改为TestCompile。“实现组”工作得很好,但它开始在Tes

  • 问题内容: 我试图用groovy为Swagger页面编写Selenium对象构建器。为了便于讨论,我的问题代码可以简化为以下几种: 调用它非常简单(来自JUnit3): 该构造函数是一个可怕的眼睛痛!我试图用以下等待替换它: 要么: 两者都产生了相同的结果:以开头的行中的闭包中的“ org.openqa.selenium.StaleElementReferenceException:元素不再连接到

  • 我有财产课: 还有一种方法: 在类的构造函数我有: 为什么当我从object按键调用函数时。我收到一条未定义的消息,为什么变量在内部不可用:

  • 编写并测试您自己的函数char*funct(char*str,int x),反转字符串str(位置n的字符除外),并返回修改后的str作为结果。函数funct的用途可以是: 这是主要的: 你好CppepC ollH 应该是: 你好Cpp