selenium和webdriver

这篇具有很好参考价值的文章主要介绍了selenium和webdriver。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简介

Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium可以直接调用浏览器,它支持所有主流的浏览器。我们可以使用selenium很容易完成之前编写的爬虫。webdriver可以理解它是浏览器的驱动。

selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

  • pip install selenium==3.141.0

  • 下载浏览器驱动程序:

    • https://registry.npmmirror.com/binary.html?path=chromedriver/&spm=a2c6h.24755359.0.0.1c384dccQ9PaJR

    • https://msedgewebdriverstorage.z22.web.core.windows.net/

      需要把相应的驱动放到python的编译环境下

    • edge的驱动需要换名字:MicrosoftWebDriver.exe

卸载已经安装的模块:pip uninstall 模块名

2. 浏览器对象

声明不同浏览器对象

from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
  • get(url=url) :地址栏输入url地址并确认
  • page_source :HTML结构源码
  • maximize_window():浏览器窗口最大化
  • quit():关闭浏览器
from selenium import webdriver

# 声明Chrome浏览器对象
browser = webdriver.Chrome()

# 请求页面 
browser.get('https://www.taobao.com')

print(browser.page_source)  # 获取网页源代码

# browser.close()  # 关闭当前页面

3. selenium定位元素

from selenium.webdriver.common.by import By

  • find_element(By.ID, '根据标签id属性进行定位')
  • find_element(By.NAME, '根据标签name属性进行定位')
  • find_element(By.CLASS_NAME, '根据标签class属性进行定位')
  • find_element(By.XPATH, '根据xpath语法进行定位')
  • find_element(By.CSS_SELECTOR, '根据css语法进行定位')
  • find_element(By.LINK_TEXT, '根据标签文本内容进行定位')
from selenium import webdriver 
from selenium.webdriver.common.by import By  #选择器

browser = webdriver.Chrome()
browser.get('https://taobao.com')

# 通过元素ID查找 
by_id = browser.find_element(By.ID,'q')
by_id.send_keys('美食')
print(by_id)

# 通过css选择器查找
css_select = browser.find_element(By.CSS_SELECTOR,'#q')
css_select.send_keys('美食')

# 通过xpath查找  
xpath = browser.find_element(By.XPATH,'//*[@id="q"]')
xpath.send_keys('美食')

# browser.close()

4. 无界面模式

from selenium import webdriver

options = webdriver.ChromeOptions()
# 添加无界面参数
options.add_argument('--headless')
browser = webdriver.Chrome(options=options)

5. 打开新窗口和切换页面

selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了

  • selenium中没有专门的打开新窗口的方法,是通过execute_script()来执行js脚本的形式来打开新窗口的。

    window.execute_script("window.open('https://www.douban.com/')")
    
  • 打开新的窗口后driver当前的页面依然还是之前的,如果想要获取新的窗口的源代码,那么就必须先切换过去。

    window.switch_to.window(driver.window_handles[1])
    
window:js的window对象
scrollTo:window的方法,可以滚到页面的任何位置
scrollHeight:是dom元素的通用属性,document.body.scrollHeight会返回body元素的高度,基本上就是页面的高度
scrollLeft:获取位于对象左边界和窗口目前可见内容的最左端之间的距离
scrollTop:获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象滚动的宽度
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('http://news.baidu.com/')
time.sleep(2)

#滚动到浏览器底部
js = 'window.scrollTo(0,document.body.scrollHeight)'
driver.execute_script(js)  # 执行js代码
time.sleep(2)

# # #滚动到顶部
js = 'window.scrollTo(0,document.body.scrollTop=0)'
driver.execute_script(js)

6. selenium-iframe

网页中嵌套了网页,先切换到iframe,然后再执行其他操作

  • 切换到要处理的Frame

    browser.switch_to.frame(frame节点对象)
    
  • 在Frame中定位页面元素并进行操作

  • 返回当前处理的Frame的上一级页面或主页面文章来源地址https://www.toymoban.com/news/detail-483250.html

    # 返回上一级
    browser.switch_to.parent_frame()
    # 返回主页面
    browser.switch_to.default_content()
    

7. 操作cookie

  • 获取cookie:driver.get_cookies()
  • 根据cookie的key获取value:value = driver.get_cookie(key)
  • 删除所有的cookie:driver.delete_all_cookies()
  • 删除某个cookie:driver.delete_cookie(key)

8. 隐式等待和显式等待

  • 隐式等待:指定一个时间,在这个时间内一直会处于等待状态。隐式等待需要使用driver.implicitly_wait
  • 显式等待:指定在某个时间内,如果某个条件满足了,那么就不会再等待。显式等待用的方法是from selenium.webdriver.support.ui import WebDriverWait

9.上例子

from selenium import webdriver  # # 驱动浏览器
from selenium.webdriver.common.by import By  #选择器
from selenium.webdriver.common.keys import Keys   #按键
from selenium.webdriver.support.wait import WebDriverWait  #等待页面加载完毕,寻找某些元素
from selenium.webdriver.support import expected_conditions as EC  ##等待指定标签加载完毕

# 1,驱动浏览器
browser = webdriver.Chrome()  

# 2,请求页面   --返回的数据封装在了browser对象里,不需要额外的变量接收
browser.get('https://www.baidu.com')  #调用浏览器驱动访问站点

# 3,拿到输入框
# text_input = browser.find_element_by_id('kw') 
text_input = browser.find_element(By.ID,'kw') 

# 4,向输入框中写入内容
text_input.send_keys('爬虫')  

# 5,按下回车按钮 
text_input.send_keys(Keys.ENTER)

# 等待事件 -- 怕网速慢
wait = WebDriverWait(browser,100)  # 参数1:浏览器对象 参数2:时间(秒)
# 等待某元素出现 presence_of_element_located()传入的参数格式是一个元组
wait.until(EC.presence_of_element_located((By.ID,'result_tts_player')))

print(browser.current_url)  #查看url
print(browser.get_cookies())  #查看cookie
print(browser.page_source)  #查看源代码

browser.close()  # 关闭浏览器

到了这里,关于selenium和webdriver的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络爬虫开发(五)01-爬虫高级——Selenium简介 & 根据平台选择安装selenium-webdriver包 & Selenium的基本使用

    网络爬虫开发(五)01-爬虫高级——Selenium简介 根据平台选择安装selenium-webdriver包 Selenium的基本使用 学习目标: 使用Selenium库爬取前端渲染的网页 反反爬虫技术 官方原文介绍: Selenium automates browsers . That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web

    2024年01月24日
    浏览(38)
  • 【软件测试/自动化测试】WebDriver+Selenium实现浏览器自动化

    前言 使用场景 原理 环境准备  开发 First Script WebDriver API 浏览器 元素 总结 Selenium是一款可以自动化操作浏览器的开源项目,最初的目的是浏览器功能的自动化测试,但是随着项目的发展,人们根据它的特性也用来做一些更多的有意思的功能而不仅仅是UI的自动化测试工具。

    2024年02月08日
    浏览(82)
  • Python自动化测试 环境搭建 Selenium、WebDriver下载、安装、配置、基本使用详解

    基本于Python语言 和 Selenium框架,使用PyCharm 开发环境,详细介绍自动化测试环境的搭建 以及 基本的使用方法。 Python环境目前已被大部分主流操作系统所支持,比如在Linux、Mac、Unix等系统上就自带了Python环境,但在Windows系统上目前还需要自己安装,(当然如已经安装过了的话

    2024年02月03日
    浏览(71)
  • Python+Selenium.webdriver实现WEB端UI自动化测试(实例脚本)

            本篇记录基于Python+Selenium.webdriver实现WEB端UI自动化测试,其中测试用例使用excel维护。为了在实际项目种的扩展应用,建议学习webdriver的元素定位方法,欢迎在评论区沟通讨论。 该示例选取的是登录页不需要输入验证码校验的基础页面(考虑到现在大部分项目都是

    2023年04月08日
    浏览(58)
  • selenium+python自动化测试之使用webdriver操作浏览器的方法

    WebDriver简介 selenium从2.0开始集成了webdriver的API,提供了更简单,更简洁的编程接口。selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作 打开浏览

    2024年01月25日
    浏览(65)
  • UI自动化测试篇 :Selenium2(Webdriver)&TestNG自动化测试环境搭建

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!    最开始学习UI自动化,用的工具是QTP10,用起来确实比较容易上手

    2024年03月10日
    浏览(66)
  • Web自动化测试:selenium的使用以及关于driver=webdriver.Firefox()无驱动报错问题

    Selenium是一个用于Web应用程序测试的工具。 主流的自动化测试工具有: web自动化测试:selenium、robot framework App端自动化测试:Appium、Monkeyrunner、UIautomation PC客户端(win32)自动化测试:QTP 接口自动化测试:Jmeter、Postman、httpUnit、RESTClient 云测平台:Testin Testbird 性能测试:Jm

    2024年02月09日
    浏览(75)
  • selenium自动化测试中,避免频繁更新浏览器driver的解决方案:webdriver-manager

            大家在本地进行web自动化脚本调试时候是不是会遇到driver的版本和浏览器不一致导致用例无法执行的问题,是否需要过下载driver需要百度的问题,下载了driver后不能开启浏览器自动更新的问题。现在有一种解决方案可以很好的帮助大家解决上述问题。         w

    2024年02月09日
    浏览(67)
  • 曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作

    上篇文章我们学习了Selenium页面操作原理及如何高效的进行元素定位 那Selenium的工作原理又是什么?是如何驱动浏览器的呢?这篇文章为你讲解Selenium工作原理及Webdriver对浏览器的配置和操作。 Python测试交流群:8140 78962 Selenium进行自动化测试主要依赖三项: 测试脚本(你写的代

    2024年02月16日
    浏览(48)
  • IE11(Win11)selenium自动化报This is the initial start page for the WebDriver server.解决方案

    本人使用IE11一直报This is the initial start page for the WebDriver server.错误,搜了很多方法例如修改Internet选项、修改注册表等等都试了,就是没有解决。 修改Internet选项,win11和网上搜出的结果,基本都不一样,所以解决无效 注册表也改了,也没用 使用python代码修改窗口缩放比例,

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包