sdfhsdfghsghsgfhserhrtjhtyjmfhgbsgfjdhfkdfghsdfhsgfjh
6条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
看起来你在尝试使用Selenium进行网页自动化测试,并且遇到了在非调试模式下无法正确获取错误信息的问题。根据你的描述,在调试模式下,你能成功地获取到预期的错误信息,但在普通运行模式下却无法得到。这个问题可能是由于页面加载速度不同导致的。
在调试模式下,程序的执行速度通常会变慢,这样可能会给网页足够的时间去渲染所有的元素,包括错误提示。而在正常运行模式下,由于执行速度快,可能在错误元素加载完成之前你就尝试访问它了。
为了解决这个问题,你可以增加一些等待时间来确保元素已经完全加载。可以使用
time.sleep()函数来实现简单的延迟,或者使用Selenium提供的条件等待方法(比如expected_conditions.presence_of_element_located())来更精确地等待特定元素出现。以下是修改后的代码示例,使用了条件等待方法来等待错误信息出现:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.implicitly_wait(10) url = "https://passport.baidu.com/v2/?reg&tt=1713852487924&overseas=&gid=DD3E780-3D6A-45C4-AF1E-5397276CB0E4&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F" driver.get(url) username_input = driver.find_element(By.XPATH, '/html/body/div[3]/div[3]/div[3]/div[2]/form/p[2]/input[2]') username_input.send_keys("abc") password_input = driver.find_element(By.XPATH, '/html/body/div[3]/div[3]/div[3]/div[2]/form/p[3]/input[2]') password_input.send_keys("abc") # 添加等待,直到错误信息元素出现 error_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '/html/body/div[3]/div[3]/div[3]/div[2]/form/p[2]/span[2]')) ) error = error_element.text print(error + "1") if error is None: print("为空") elif error == "": print("为空字符串") else: print("其他")这段代码增加了对错误元素的条件等待,确保在尝试获取文本之前,元素已经被加载到了页面上。这样应该就能在正常运行模式下也能获取到错误信息了。如果你仍然遇到问题,请检查浏览器驱动是否是最新的,以及是否存在网络连接问题。
解决 无用评论 打赏 举报 编辑记录