Selenium 和 Python 未找到元素,即使它们存在

问题描述 投票:0回答:1

我正在尝试以电子商务商店的形式自动化构建网站的重复过程(我是业余爱好者)。这些重复的步骤肯定会节省我大量的时间。我已经整理了一些步骤,但现在我无法找到某个按钮,我检查浏览器并且可以复制 xpath,但是当我运行代码时它找不到它。我在这里阅读了大约 200 个问题,但仍然找不到对我有帮助的答案。所以如果有人能帮助我,我将不胜感激。

出现的部分错误是这样的。

TimeoutException Traceback(最近一次调用最后一次) 单元格 In[62],第 221 行 第218章 10 220 # 团体“Adicionar Páginas” --> 221 WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="app"]/div[1]/div[2]/div/div[1 ]/div[2]/div/div[2]/div/div/a/span'))).click()

超时异常:消息:

HTML 做 botão

<a href="https://admin.shopify.com/store/dc7020-3/pages/new" data-polaris-unstyled="true" class="Polaris-Button_r99lw Polaris-Button--pressable_1q8ey Polaris-Button--variantPrimary_1stsb Polaris-Button--sizeMedium_5f35p Polaris-Button--textAlignCenter_1kere"><span class="">Adicionar página</span></a>

即使我让屏幕已加载,并运行代码只是为了单击,它也找不到它。

我已经尝试过:find_element; element_to_be_clickable;所有元素的存在

我已经尝试过:By.XPATH;通过 ID;通过.CSS_SELECTOR;按名字;等等

我尝试运行的部分代码

 # Navigate to the "Pages" tab only the first time
        if i == 0:
            # Click on the 'Pages' tab
            WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[normalize-space()='Páginas']"))).click()

            # Click on the 'Add Pages' button
            WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="app"]/div[1]/div[2]/div/div[1]/div[2]/div/div[2]/div/div/a/span'))).click()
python-3.x selenium-webdriver xpath
1个回答
0
投票

这里的 Timeout Exception 错误表示在找到 XPath 指定的元素之前 WebDriverWait 方法已经超时 '//*[@id="app"]/div1/div[2]/div/div1/div[2]/div/div[2]/div/div/a/span'

这意味着10秒后它就不存在了

通过增加超时时间来尝试此操作

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="app"]/div1/div[2]/div/div1/ div[2]/div/div[2]/div/div/a/span'))).click()

尝试使用 while 循环进行 WebDriverWait

loop_wait = WebDriverWait(驱动程序, 20)

而真实:

 try:
   
   wbdrvr = loop_wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="app"]/div[1]/div[2]/div/div[1]/div[2]/div/div[2]/div/div/a/span')))
   
   break 

 except TimeoutException:

   pass

wbdrvr.click()

查看iframe是否包含xpath

请参阅此处了解有关使用 iframe 查找 xpath 的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.