selenium

本文详细介绍了Selenium的安装、浏览器驱动下载,以及如何使用Selenium进行浏览器自动化,包括启动浏览器、元素定位、等待策略和实战练习。重点讲解了显示等待WebDriverWait()的用法,并列举了多种元素定位方法,如id、name、link text等。
摘要由CSDN通过智能技术生成

selenium

  • 基于浏览器自动化的一个模块;
  • 便捷的获取网站中动态加载的数据;
  • 便捷实现模拟登录;

 

一、selenium安装

  • 安装:pip install --user selenium

 

二、selenium各浏览器驱动下载

  • 使用:把驱动文件存放在python根目录下,例如:C:\Python38\下

 

1、Chrome浏览器驱动Driver下载:http://npm.taobao.org/mirrors/chromedriver/

from selenium import webdriver
#启动浏览器
driver = webdriver.Chrome()

 

2、Firefox浏览器驱动Driver下载:https://github.com/mozilla/geckodriver/releases/

from selenium import webdriver
#启动浏览器
driver = webdriver.Firefox()

 

3、IE浏览器驱动Driver下载http://selenium-release.storage.googleapis.com/index.html

注意:IE浏览器的Internet选项中,安全页的4个安全选项,Internet、本地Internet、受信任的站点、受限制的站点,启用保护模式,都需要勾选上;

from selenium import webdriver
# 启动浏览器
driver = webdriver.Ie()

 

4、Microsoft Edge (EdgeHTML)浏览器驱动Driver下载:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

from selenium import webdriver
# 启动浏览器
driver = webdriver.Edge()

 

5、Opera浏览器驱动Driver下载:https://github.com/operasoftware/operachromiumdriver/releases

from selenium import webdriver
# 启动浏览器
driver = webdriver.Opera()

 

6、Safari浏览器驱动Driver下载:该浏览器不用下载驱动,可以直接执行代码

from selenium import webdriver
# 启动浏览器
driver = webdriver.Safari()

 

三、selenium使用

1、浏览器常用操作

  • 启动chrome浏览器,bro = webdriver.Chrome()
  • 打开网页,bro.get(url)
  • 最大化浏览器,bro.maximize_window()
  • 等待定位的元素出现:
    • 1)隐式等待2秒,bro.implicitly_wait(2)webdriver 提供的一个超时等待,等待一个元素被发现,或一个命令完成,如果超出了设置的时间,则抛出异常;
    • 2)显示等待10秒,WebDriverWait(),在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到,则抛出异常。
      • 2.1> 等待元素出现:element = WebDriverWait(bro, 10).until(lambda x: x.find_element_by_id("kw"))
      • 2.2> 等待元素消失:is_disappeared = WebDriverWait(bro, 10, 1, ).until_not(lambda x: x.find_element_by_id("denglu").is_displayed())
      • 默认检测频率为0.5s,默认抛出异常为:NoSuchElementException
    • 3)强制等待2秒,sleep(2)  python的time包中的sleep()方法
  • 获取当前页面的源码,page_text = bro.page_source
    • 使用字符串查找关键字;
    • 使用etree的xpath解析;
  • 获取当前页面的url,bro.current_url
  • 退出浏览器,bro.quit()
  • 关闭当前标签页,bro.close()

 

显示等待WebDriverWait()

  • 一旦页面上某些js无法加载出来(其实界面元素已经出来了),左上角那个图标一直转圈,这时候会一直等待的,所以可以使用显示等待来解决等待时间过长的问题。
  • WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
    • 入参driver,浏览器的一个实例,如传入bro,bro = webdriver.Chrome()
    • 入参timeout,超时的总时长;
    • 入参poll_frequency,循环去查询的间隙时间,默认0.5秒;
    • 入参ignored_exceptions,默认的忽略报错异常NoSuchElementException
    • 经常使用场景:
      • 直到元素出现,结束等待;
      • 直到元素消失,结束等待;


1)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值