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("其他")
这段代码增加了对错误元素的条件等待,确保在尝试获取文本之前,元素已经被加载到了页面上。这样应该就能在正常运行模式下也能获取到错误信息了。如果你仍然遇到问题,请检查浏览器驱动是否是最新的,以及是否存在网络连接问题。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
- ¥15 怎么看我在bios每次修改的日志
- ¥15 python+mysql图书管理系统
- ¥15 Questasim Error: (vcom-13)
- ¥15 船舶旋回实验matlab
- ¥30 SQL 数组,游标,递归覆盖原值
- ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
- ¥20 gitlab 中文路径,无法下载
- ¥15 用动态规划算法均分纸牌
- ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据