在xpath中找不到元素(Instagram、selenium、python)

2024-04-19 20:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我一直在尝试制作一个instagram bot,它会将src链接发送回帖子,但我遇到了麻烦,我不断收到错误“selenium.common.exceptions.NoSuchElementException:Message:找不到元素:/html/body/div[4]/div[2]/div/article/div[2]/div/div/div/div/div/div[1]/img”当我试图获取包含src的元素的xpath时。有人能帮忙吗? 链接:https://www.instagram.com/direct/inbox/

    def dm_check(self, driver):
        print("dm_check starts here")

        try:
            self.driver.find_element_by_xpath('/html/body/div[1]/section/div/div[2]/div/div/div[1]/div[2]/div/div/div/div/div[1]/a/div').click()
        except:
            self.driver.get('https://www.instagram.com/direct/inbox/')
            print("Refreshing...")
            time.sleep(10)
            self.dm_check(self.driver)


        print("dm_check stops here")

        self.download(self.driver)
    
    def download(self, driver):
        print("download starts here")

        self.driver.find_element_by_xpath('/html/body/div[1]/section/div/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div/div[2]/div[2]/div/div/div/div/div/div/div[2]/img').click()
        post = self.driver.find_element_by_xpath('/html/body/div[4]/div[2]/div/article/div[2]/div/div/div[1]/img').get_attribute("src")
        print(str(post))

        print("download ends here")

        self.dmessage(self.driver)

Tags: selfdivsrcimgheredownloadhtmlcheck
2条回答

在一些基本情况下会出现这种例外情况

  • 此项目不在页面上。页面未加载或页面无效
  • 元素的路径不正确
  • 如果前两个点匹配,那么你真的需要看看是否有帧

为此,您需要尝试使用以下代码切换到帧

iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']")

您可以将“//iframe[@name='Dialogue Window']”替换为您的标识符

driver.switch_to.frame(iframe)

只需在搜索元素之前插入。 如果元素确实在框架中,则会找到它

driver.switch_to.default_content()

以防万一,下面是退出框架的代码

是的!我觉得你的状态不对。。。可能有一个弹出窗口或类似的东西。如果是这样的话,你必须关闭它。要切换到活动元素,请执行以下操作:

driver.switch_to_active_element()

然后你可以找到“关闭”按钮或其他东西。关闭后,您将能够继续在页面上浏览网页,并找到所需的元素;)

相关问题 更多 >