繁体   English   中英

Selenium(PYTHON) 检查元素是否存在

[英]Selenium(PYTHON) check whether or not element exists

所以我试图弄清楚如何正确运行这个循环,我的问题是,根据正在加载的链接,加载的页面会有访问被拒绝错误,这不是所有链接都这样,我的问题是我想确定当特定元素加载到我的屏幕上时,程序是否识别它并中断循环,并在 for 循环中开始下一次迭代,所以我试图确定“拒绝访问”元素是否存在,如果是则break,否则继续for循环

idList = ["8573", "85678", "2378", "2579"]


for ID in idList:


    print(ID)
    driver.get(f"https://www.someWebsite/username/{ID}")

    element = driver.find_element_by_class_name("Access-Denied")
   
    print("error loading website")
    break
if not element:

    print("you may continue the for loop")

请注意,如果显示拒绝访问页面的元素不存在,我收到“拒绝访问”元素不存在的错误,我该如何解决?

您想等待网页收到正确的响应。 使用以下代码,您可以等待加载的完整响应,然后根据结果采取适当的措施:

from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait

...
try:
    _ = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "Access-Denied"))
        )
    print("error loading website")
    break
except TimeoutException:
    print("you may continue the for loop")
...

因此,如果访问被拒绝,那么您想循环访问然后中断。

wait = WebDriverWait(driver, 10)
idList = ["8573", "85678", "2378", "2579"]

for ID in idList:
    print(ID)
    driver.get(f"https://www.someWebsite/username/{ID}")
    try:
        element=wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'Access-Denied')))
        break
    except:
        continue

进口

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM