Selenium_4.三种等待时间

Selenium_三种等待时间

三种等待时间:

强制等待:
time.sleep(3),强制等待几秒,执行下一步操作。
缺点:不准确,浪费等待时间。

隐式等待:
在一定的时间内,页面加载完成,就进行下一步操作。
优点:设置一次即可。
缺点:等待整个页面加载完成,可能我们需要的页面元素已经加载完成,但是页面一些大的文件、图片没有加载完成,那么就有必要等待整个页面加载完成。

显式等待:
webdriverwait
程序每隔x秒去看一眼指定元素,如果条件成立了,则执行操作,否则继续等待,直到超过设置的最长时间,然后抛出异常。
webdriverwait(driver,超时时间,调用频率).until(要执行的方法,超时返回的错误信息)

#首先导入库
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC  #导入查看元素状态的类取别名为EC

#方法一
WebDriverWait(browser,10,0.5).until(lambda x:x.find_element(By.XPATH,"xath路径")) 

#方法二
WebDriverWait(browser,10,0.5).until_not(EC.visibility_of_element_located((By.XPATH,"xpath路径")))



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码存在以下问题: 1. 密码明文存储:将密码明文写在代码中,存在安全隐患,建议使用配置文件或者环境变量等方式进行存储和读取。 2. 显式等待时间过长:在等待登录后获取用户信息时,使用了 `time.sleep(15)` 进行等待,建议使用显式等待的方式进行等待,可以更加准确地等待元素出现。 3. 代码可读性差:代码结构不清晰,建议使用函数或者类等方式对代码进行组织,提高可读性和可维护性。 4. 代码复用性差:在获取登录的cookie数据时,将数据直接写入文件中,不方便在其他地方进行复用,建议将数据返回给调用方进行处理。 5. 代码健壮性差:没有对获取元素和等待元素出现等操作进行异常处理,可能会因为元素未找到或者等待超时等问题导致程序崩溃。 针对这些问题,可以进行如下调整: ```python import json from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from utils import create_chrome_driver def login(username, password): browser = create_chrome_driver() try: browser.get('https://login.taobao.com') # 隐式等待 browser.implicitly_wait(10) # 获取页面元素模拟用户输入和点击行为 username_input = browser.find_element(By.CSS_SELECTOR, '#fm-login-id') username_input.send_keys(username) # 填写用户名 password_input = browser.find_element(By.CSS_SELECTOR, '#fm-login-password') password_input.send_keys(password) # 填写对应的密码 # 登录按钮 login_button = browser.find_element(By.CSS_SELECTOR, '#login-form > div.fm-btn > button') login_button.click() # 显式等待 wait_obj = WebDriverWait(browser, 10) wait_obj.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.m-userinfo'))) # 获取登录的cookie数据,并返回给调用方 cookies = browser.get_cookies() return cookies finally: browser.quit() ``` 这个函数可以接收用户名和密码作为参数,并返回登录后的cookie数据,同时加入了异常处理等机制,提高了代码的健壮性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值