首页 > 其他分享 >selenium教程

selenium教程

时间:2023-05-31 22:31:52浏览次数:38  
标签:教程 selenium driver cookies current cookie options

一、selenium和chromedriver的安装配置

1、下载selenium

pip install selenium

2、下载chromedriver

https://npmmirror.com/

chromedriver 版本和 chrome 版本要一致

3、简单使用案例

from selenium import webdriver
import time

options = webdriver.ChromeOptions()
# 取消Chrome提示受到自动软件控制的提示
options.add_argument('disable-infobars')
'''
有的版本chrome需要下面代码取消自动软件控制提示
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option("excludeSwitches", ['enable-automation'])
'''
# 最大窗口打开
options.add_argument('--start-maximized')
# 取消沙盒模式
options.add_argument('--no-sandbox')
# 创建驱动
driver = webdriver.Chrome(options=options)
# chrome浏览器打开百度主页
driver.get('http://www.baidu.com')
# 休眠3秒
time.sleep(3)
# 打印当前页url
print(driver.current_url)
# 打印源码
print(driver.page_source)
# 关闭浏览器
driver.quit()

4、注意事项

  • 配置 chromedriver,把chromedriver.exe文件夹添加到环境变量Path里。

  • 在chrome浏览器快捷方式点右键——属性——目标,添加' --allow-running-insecure-content'。

二、driver对象的常用属性和方法

  • driver.current_url # 当前url
  • driver.page_source # 浏览器渲染后的网页源码
  • driver.close() # 关闭当前标签页,只有一个关闭浏览器
  • driver.quit() # 关闭浏览器
  • driver.forward() # 页面前进
  • driver.back() # 页面后退
  • driver.save_screenshot(img_name) # 页面截图

三、driver对象定位标签元素获取标签对象的方法

  • find_element()

  • find_elements()

    方法有两个参数,第一个参数可使用 'id' 或者 By.ID,使用By.ID需要引入 from selenium.webdriver.common.by import By

    find_element返回一个元素对象,找不到报错,find_elements返回一个列表,找不到为空列表,长度为0。返回的是selenium.webdriver.remote.webelement.WebElement 对象。

# 在百度的搜索框中输入 selenium
driver.find_element(by=By.ID, value='kw').send_keys('selenium')
# 点击百度的搜素按钮
driver.find_element('id', 'su').click()
  • selenium.webdriver.remote.webelement.WebElement的属性方法

    element.text # 获取文本

    element.get_attribute("属性名") # 获取属性值

    element.click() # 单击

    elemnet.send_keys("") # 输入文本 ,针对 text input 标签

    elemnet.clear() # 输入框清空

四、selenium 的其他操作

1、selenium 标签页的切换

  • 获取所有窗口页的窗口句柄

    current_windows = driver.window_handles

  • 切换标签页

    driver.switch_to.window(current_windows[1])

    driver.get('http://www.baidu.com')
    driver.find_element(By.PARTIAL_LINK_TEXT, value="hao123").click()
    time.sleep(2)
    # 获取全部标签页的句柄
    current_windows = driver.window_handles
    # 打印当前url
    print(driver.current_url)
    # 打印当前句柄
    print(driver.current_window_handle)
    # 切换标签页
    driver.switch_to.window(current_windows[1])
    # 打印当前url
    print(driver.current_url)
    # 打印当前句柄
    print(driver.current_window_handle)
    # 退出
    driver.quit()
    

2、selenium 切换frame 标签

​ 很多登录窗口使用frame,如果不切换到frame,无法登录成功

  • el_frame = driver.find_element()
  • driver.switch_to.frame(el_frame)

3、selenium对cookie的处理

  • 获取当前标签页的cookie信息

    driver.get_cookies()

  • 把cookies转化为字典

    cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}

    # 获取当前标签页的cookies
    driver.get_cookies()
    # 把cookies转换为字典对象
    cookies_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
    
  • 删除cookie

    # 删除名为'ZFY'的cookie
    driver.delete_cookie('ZFY')
    # 删除全部cookie
    driver.delete_all_cookies()
    

4、控制浏览器执行js代码

​ driver.execute_script()

​ 例如:让网页滚动条向下滚动。

​ driver.execute_script('scrollTo(0,1000)')

5、页面等待

  • 强制等待 time.sleep()

  • 隐式等待 针对元素定位,在一定时间内判断元素是否定位成功, 如果完成了就下一步,在设置时间内没有成功,会报超时加载,代码:driver.implicitly_wait(10),最长等待10秒。一次设置,全局生效。

  • 显示等待 当等待的条件满足后(一般用来判断需要等待的元素是否加载出来),就继续下一步操作。等不到就一直等,如果在规定的时间之内都没找到,那么就跳出Exception。

    需要引入下列模块

    from selenium.webdriver.support import expected_conditions as EC

    from selenium.webdriver.support.wait import WebDriverWait

6、开启无界面模式

# 开启无界面模式
options.add_argument('--headless')
# 配置对象禁用gpu
options.add_argument('--disable-gpu')

7、使用代理IP

options.add_argument('--proxy-server=http://IP:端口')

标签:教程,selenium,driver,cookies,current,cookie,options
From: https://blog.51cto.com/u_16109758/6390372

相关文章

  • Revit二次开发系列教程01-如何在Revit中创建模型过程的理解
    目录01案例02步骤讲解03关键类理解04总结05源码地址01案例创建一个结构墙usingAutodesk.Revit.Attributes;usingAutodesk.Revit.DB;usingAutodesk.Revit.UI;usingSystem.Linq;namespaceExampleBasic{[Transaction(TransactionMode.Manual)][Regener......
  • echarts入门教程(超级详细带案例)
    ————————————————版权声明:本文为CSDN博主「争儿不脱发」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/m0_55734030/article/details/127559434一.echarts的介绍1、echarts是一款基于JavaScript的数据可......
  • Jenkins教程(自动化部署)
    Jenkins教程(自动化部署)叶凡Jonas 软件测试成长之路 2023-05-2706:00 发表于上海收录于合集#测试运维系列12个1.Jenkins是什么?Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。Jenkins用Java语言编写......
  • VMware 虚拟机图文安装和配置 Rocky Linux 8.5 教程
    来源:http://www.taodudu.cc/news/show-4808148.html?action=onClick一、VMWare安装配置1、VMware下载地址:VMwareWorkstationPro16.x(需要登录),安装和配置步骤略。二、RockyLinux8.5安装配置1、RockyLinux8.5下载地址:RockyLinux8(Current)根据你的实际需求选择合......
  • QA|selenium在send_keys时报错dict object has no attribute ''|UI自动化测试
    Q:selenium在send_keys时报错dictobjecthasnoattribute'send_keys',如下图 增加了print(type(e1))发现确实是字典类型,怪了,按道理e1的type应该是selenium.webdriver.remote.webelement.WebElement才对,怎么会变成dict字典呢?我网上查了,按照(115条消息)Python运行selenium时......
  • tBNB怎么购买比较靠谱?币售Bisell购买测试币教程
    随着测试币水龙头的日渐枯竭,对于很多开发者和撸毛用户来说,去哪里领水是个大问题。于是,基于测试币的交易平台——币售Bisell就出现了。币售Bisell提供几乎所有测试链的测试币交易服务,包括tBNB、GoerliETH、AGOR、SepoliaETH测试币等等,可以以任何方式买到自己想要的测试币。......
  • QA|selenium打开浏览器后没有执行后面的代码(get请求)|UI自动化测试
    Q:selenium打开浏览器后没有执行后面的代码(get请求)代码如图: 原因:webdriver_path应该给的是chromedriver.exe的路径,而不是chrome.exe的路径,写错了,正确的如下: 查阅参考:Selenium打开浏览器,但拒绝执行下一行代码-我爱学习网(5axxw.com)......
  • selenium-some code
     ======================================fromseleniumimportwebdriverdriver=webdriver.Chrome()driver.get("http://selenium.dev")#driver.quit() fromseleniumimportwebdriveroption=webdriver.ChromeOptions()option.add_experimental......
  • STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程
    iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。开发板既有A7核,又有M4核,从学习者角度来看,既......
  • Creo 9.0软件安装教程Creo 9.0软件安装包下载
    [名称]:Creo9.0[大小]:5.23GB[语言]:简体中文[适用系统]:win10,win1164位系统[简介]:Creo是领先的3D、CAD解决方案,设计工程师可将其用于产品仿真、3D机械设计、分析测试、工具创建、设计沟通和制造。[64位下载地址]:https://pan.baidu.com/s/1bi_Tsz5cZwvDI4ct4LlVMQ密码:pe9z安装有......