selenium安装卸载

安装
pip install selenium
查看
pip show selenium
卸载
pip uninstall selenium

快捷键:
ctrl+alt+space 快速导包

扩展
1.安装指定版本
pip install selenium ==版本号
eg:pip install selenium ==2.48.0

驱动下载地址
谷歌:http://npm.taobao.org/mirrors/chromedriver/87.0.4280.88/
火狐:https://github.com/mozilla/geckodriver/releases
下载对应版本,放在本地,将路径放到环境变量中,即可

Selenium提供了八种定位元素方式

1. id定位

element = driver.find_element_by_id(id)

2.name定位

element = driver.find_element_by_name(name)

3.class_name定位方法

element = driver.find_element_by_class_name(class_name)

4.link_text定位
说明:link_text定位是专门用来定位超链接元素(标签),并且是通过超链接的文本内容来定位元素

element = driver.find_element_by_link_text(link_text)
link_text:为超链接的全部文本内容

5.tag_name定位
说明:tag_name定位就是通过标签名来定位;
HTML本质就是由不同的tag组成,每一种标签一般在页面中会存在多个,所以不方便进行精确定位,
一般很少使用

element = driver.find_element_by_tag_name(tag_name)
如果存在多个相同标签,则返回符合条件的第一个标签
如何获取第二个元素?稍后讲解

6.partial_link_text定位
说明:partial_link_text定位是对link_text定位的补充,link_text使用全部文本内容匹配元素,
而partial_link_text可以使用局部来匹配元素,也可以使用全部文本内容匹配元素。

element = driver.find_element_by_partial_link_text(partial_link_text)
partial_link_text:可以传入a标签局部文本-能表达唯一性

7.定位一组元素
find_elements_by_css()

作用:
1). 查找定位所有符合条件的元素
2). 返回的定位元素格式为数组(列表)格式;
说明:
1). 列表数据格式的读取需要指定下标(下标从0开始)

8.Xpath定位元素
1).准备
安装旧版本火狐浏览器
地址:
64位火狐54:http://ftp.mozilla.org/pub/firefox/releases/54.0.1/win64/zh-CN/
32位火狐54:http://ftp.mozilla.org/pub/firefox/releases/54.0.1/win32/zh-CN/
在网上下载firebug和irepath插件即可
在火狐浏览器中将两个组件添加至浏览器即可

2).XPath定位策略(方式)

1. 路径-定位
2. 利用元素属性-定位
3. 属性与逻辑结合-定位
4. 层级与属性结合-定位

3).xpath定位方法
实例代码

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
url = r'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
#绝对路径xpaths
#driver.find_element_by_xpath('/html/body/form/div/fieldset/p[1]/input').send_keys('123')
#使用层级
#driver.find_element_by_xpath("//p[@id='p1']/input").send_keys('123')#相对路径xpath
#driver.find_element_by_xpath("//input[@id='passwordA']").send_keys("123")
#逻辑结合
#driver.find_element_by_xpath("//input[@id='passwordA'and @name='passwordA']").send_keys("123")
sleep(3)
driver.quit()

延申
//[text()=“xxx”] 文本内容是xxx的元素
//
[contains(@attribute,‘xxx’)] 属性中含有xxx的元素 (移动端定位常用)
eg://*[contains(@id,“p1”)]

//[starts-with(@attribute,‘xxx’)] 属性以xxx开头的元素
eg://
[starts-with(@id,“us”)]

9.css定位
#使用css id选择器

driver.find_element_by_css_selector('#userA').send_keys('admin')

#使用css属性选择器

driver.find_element_by_css_selector(“[name='passwordA']").send_keys('123456')

#使用class选择器

driver.find_element_by_css_selector('.telA').send_keys('15601021091')

#使用css元素选择器定位span标签获取文本值

span = driver.find_element_by_css_selector("span").text
print(span)

#使用层级选择器,定位email,输入123@qq.com

driver.find_element_by_css_selector("p>input[id='emailA']").send_keys('123@qq.com')

延申
input[type^=‘p’] type属性以p字母开头的元素
eg:[id^=‘em’]

input[type=′d′]type属性以d字母结束的元素[id='d'] type属性以d字母结束的元素 [id=′d′]type属性以d字母结束的元素[id=‘elA’]

input[type*=‘w’] type属性包含w字母的元素
eg:[id*=‘elA’]

find_element()方法

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = "http://www.tpshop.com/index.php"
driver.get(url)
driver.find_element(By.CSS_SELECTOR,'.red').click()
driver.quit()

操作元素的方法

  1. click() 单击元素
  2. send_keys(value) 模拟输入
  3. clear() 清除文本
    需求:打开注册A页面,完成以下操作 1).通过脚本执行输入用户名:admin;密码:123456;电话号码:18611111111;电子邮件:123@qq.com 2).间隔3秒,修改电话号码为:18600000000 3).间隔3秒,点击‘注册’按钮 4).间隔3秒,关闭浏览器 5).元素定位方法不限
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
driver.find_element_by_css_selector('#userA').send_keys('admin')
driver.find_element_by_css_selector('#passwordA').send_keys('18210438231')
driver.find_element_by_css_selector('.telA').send_keys('18210422222')
driver.find_element_by_css_selector('#emailA').send_keys('123@qq.com')
sleep(3)
driver.find_element_by_css_selector('.telA').clear()
driver.find_element_by_css_selector('.telA').send_keys('18900033333')
sleep(3)driver.find_element_by_css_selector('button').click()
sleep(3)
driver.quit()

浏览器常用操作

  1. maximize_window() 最大化浏览器窗口 --> 模拟浏览器最大化按钮
  2. set_window_size(width, height) 设置浏览器窗口大小 --> 设置浏览器宽、高(像素点)
  3. set_window_position(x, y) 设置浏览器窗口位置 --> 设置浏览器位置
  4. back() 后退 --> 模拟浏览器后退按钮
  5. forward() 前进 --> 模拟浏览器前进按钮
  6. refresh() 刷新 --> 模拟浏览器F5刷新
  7. close() 关闭当前窗口 --> 模拟点击浏览器关闭按钮
  8. quit() 关闭浏览器驱动对象 --> 关闭所有程序启动的窗口
  9. title 获取页面title
  10. current_url 获取当前页面URL

例子:

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
#浏览器最大化
driver.maximize_window()
sleep(2)
#设置大小
driver.set_window_size(300,200)
sleep(2)
#移动浏览器窗口位置x:320,y:150
driver.set_window_position(320,150)
sleep(2)
driver.maximize_window()
#访问新浪网站
driver.find_element_by_css_selector("#fwA").click()
sleep(2)
#后退
driver.back()
sleep(2)
#前进
driver.forward()
sleep(3)
driver.quit()

例二

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html'
driver.get(url)
driver.find_element_by_css_selector("#user").send_keys("aaaaa")
sleep(2)
#刷新
driver.refresh()
sleep(2)
#获取title
title = driver.title
print(title)
sleep(2)
#获取url
curuent_url = driver.current_url
print(curuent_url)
sleep(2)
#关闭主窗口
driver.find_element_by_css_selector("#ZCA").click()
driver.close()
sleep(3)
driver.quit()

获取元素信息

  1. size 返回元素大小
  2. text 获取元素的文本
  3. get_attribute(“xxx”) 获取属性值,传递的参数为元素的属性名
  4. is_displayed() 判断元素是否可见
  5. is_enabled() 判断元素是否可用
  6. is_selected() 判断元素是否选中,用来检查复选框或单选按钮是否被选中 提示:1. size、text:为属性,调用时无括号;如:xxx.size
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
url = "file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html"
driver.get(url)
size = driver.find_element_by_css_selector("#userA").size
print(size)
#获取超链接内容
text = driver.find_element_by_css_selector("#fwA").text
print(text)
#获取页面上第一个超文本链接地址
att = driver.find_element_by_css_selector("a").get_attribute("href")
print(att)
#判断span元素是否可见
display = driver.find_element_by_css_selector("span").is_displayed()
print(display)
#判断取消按钮是否可用
enable = driver.find_element_by_css_selector("#cancelA").is_enabled()
print(enable)
#判断旅游是否被选中
select = driver.find_element_by_css_selector("#lyA").is_selected()
print(select)
sleep(3)
driver.quit()

鼠标操作
导包
from selenium.webdriver.common.action_chains import ActionChains
实例化对象: action = ActionChains(driver) 方法:

  1. context_click(element) 右击 --> 模拟鼠标右键点击效果
  2. double_click(element) 双击 --> 模拟鼠标双击效果
  3. drag_and_drop(source, target) 拖动 --> 模拟鼠标拖动效果
  4. move_to_element(element) 悬停 --> 模拟鼠标悬停效果
  5. perform() 执行 --> 此方法用来执行以上所有鼠标操作

为了更好的学习其他方法,我们先学习perform()执行方法,因为所有的方法都需要执行才能生效

例子

from selenium import webdriver
from time import sleep
#获取浏览器驱动对象
from selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()
url = "file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html"
driver.get(url)
#实例化对象
action = ActionChains(driver)
#执行右击方法
username= driver.find_element_by_css_selector("#userA")
action.context_click(username).perform()
sleep(2)
#执行双击
pwd=driver.find_element_by_css_selector("#passwordA")
pwd.send_keys("password")
action.double_click(pwd).perform()
sleep(2)
#移动到按钮上
action.move_to_element(driver.find_element_by_css_selector("button")).perform()
sleep(2)
driver.quit()
from selenium import webdriver
from time import sleep
#获取浏览器驱动对象
from selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()
url = "file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/drop.html"
driver.get(url)
#实例化对象
action = ActionChains(driver)
#原目标
source = driver.find_element_by_css_selector("#div1")
target = driver.find_element_by_css_selector("#div2")
sleep(2)
#目标执行
#action.drag_and_drop(source,target).perform()
#扩展,通过偏移量执行
action.drag_and_drop_by_offset(source,xoffset=360,yoffset=180).perform()
sleep(2)
driver.quit()

键盘操作
导包
from selenium.webdriver.common.keys import Keys
方法

  1. send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  2. send_keys(Keys.SPACE) 空格键(Space)
  3. send_keys(Keys.TAB) 制表键(Tab)
  4. send_keys(Keys.ESCAPE) 回退键(Esc)
  5. send_keys(Keys.ENTER) 回车键(Enter)
  6. send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
  7. send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
    提示:以上方法就不一个一个讲解了,因为调用方法都一样;

例子

from selenium import webdriver
from time import sleep
#获取键盘对象
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
username = driver.find_element_by_css_selector("#userA")
username.send_keys("admin1")
sleep(2)
#删除1
username.send_keys(Keys.BACK_SPACE)
sleep(2)
#全选admin ctrl+a
username.send_keys(Keys.CONTROL,"a")
sleep(2)
#复制Ctrl+c
username.send_keys(Keys.CONTROL,"c")
sleep(2)
#定位密码框,执行ctrl+v
driver.find_element_by_css_selector("#passwordA").send_keys(Keys.CONTROL,"v")
sleep(2)
driver.quit()

元素等待

  1. 隐式等待
    driver.implicitly_wait(timeout)
  2. 显式等待
  3. 导包 等待类->from selenium.webdriver.support.wait import WebDriverWait
  4. WebDriverWait(driver, timeout, poll_frequency=0.5)
    1). driver:浏览器驱动对象
    2). timeout:超时的时长,单位:秒
    3). poll_frequency:检测间隔时间,默认为0.5秒
  5. 调用方法 until(method):直到…时
    1). method:函数名称,该函数用来实现对元素的定位
    2). 一般使用匿名函数来实现:lambda x: x.find_element_by_id(“userA”)
  6. element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id(“userA”) )

例子:

import time
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait driver = webdriver.Firefox() driver.get("file:///D:/webAutoTest/page/注册A.html") element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("userA")) element.send_keys("admin") time.sleep(3) driver.quit()

显式等待与隐式等待的区别

  1. 作用域:隐式为全局元素,显式等待为单个元素有效
  2. 使用方法:隐式等待直接通过驱动对象调用,而显式等待方法封装在WebDriverWait类中
  3. 达到最大超时时长后抛出的异常不同:隐式为NoSuchElementException,显式等待为TimeoutExcepti on

下拉选择框操作
说明:Select类是Selenium为操作select标签特殊封装的。 实例化对象: select = Select(element) element: 标签对应的元素,通过元素定位方式获取, 例如:driver.find_element_by_id(“selectA”)
操作方法:

  1. select_by_index(index) --> 根据option索引来定位,从0开始
  2. select_by_value(value) --> 根据option属性 value值来定位
  3. select_by_visible_text(text) --> 根据option显示文本来定位
    例子:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
e1=driver.find_element_by_css_selector("#selectA")
sleep(2)
"""通过下标"""
#切换上海
# Select(e1).select_by_index(1)
# sleep(2)
# Select(e1).select_by_index(2)"""通过value值"""
# sel = Select(e1)
# sel.select_by_value("sh")
# sleep(2)
# sel.select_by_value("gz")"""通过显示文本切换"""
Select(e1).select_by_visible_text("A上海")
sleep(2)
Select(e1).select_by_visible_text("A广州")sleep(2)
driver.quit()

弹出框处理
说明:Selenium中对处理弹出框的操作,有专用的处理方法;并且处理的方法都一样

  1. 获取弹出框对象 alert = driver.switch_to.alert
  2. 调用
    alert.text --> 返回alert/confirm/prompt中的文字信息
    alert.accept() --> 接受对话框选项
    alert.dismiss() --> 取消对话框选项

例子

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
driver.find_element_by_css_selector("#alerta").click()
alt = driver.switch_to.alert
#确定
# alt.accept()
#获取文本
print(alt.text)
#取消
alt.dismiss()
driver.find_element_by_css_selector("#userA").send_keys("admin")
sleep(2)
driver.quit()

滚动条
处理方法

1. 设置JavaScript脚本控制滚动条 js = "window.scrollTo(0,1000)" (0:左边距;1000:上边距;单位像素)
2. selenium调用执行JavaScript脚本的方法 driver.execute_script(js)

例子

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
url = 'file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8CA.html'
driver.get(url)
driver.maximize_window()
js = "window.scrollTo(0,1000)"
driver.execute_script(js)
sleep(2)
driver.quit()

frame切换
说明:在Selenium中封装了如何切换frame框架的方法
方法:
1). driver.switch_to.frame(frame_reference) --> 切换到指定frame的方法 frame_reference:可以为frame框架的name、id或者定位到的frame元素
2). driver.switch_to.default_content() --> 恢复默认页面方法,在frame中操作其他页面,必须先回到默认页面,才能进一步操作

多窗口切换
说明:在Selenium中封装了获取当前窗口句柄、获取所有窗口句柄和切换到指定句柄窗口的方法; 句柄:英文handle,窗口的唯一识别码
方法:
1). driver.current_window_handle --> 获取当前窗口句柄
2). driver.window_handles --> 获取所有窗口句柄
3). driver.switch_to.window(handle) --> 切换指定句柄窗口

例子:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
url = "file:///C:/Users/sgd_user/Desktop/driver/cailiaoeg/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html"
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(5)
handle = driver.current_window_handle
print(handle)
driver.find_element_by_css_selector("#ZCA").click()
hanles = driver.window_handles
for h in hanles:if h != handle:#切换driver.switch_to.window(h)
driver.find_element_by_css_selector("#userA").send_keys("admin")
sleep(2)
driver.quit()

截屏操作
说明:在Selenium中,提供了截图方法,我们只需要调用即可
方法: driver.get_screenshot_as_file(imgpath) imgpath:图片保存路经
例子:

driver.find_element_by_id("userA").send_keys("admin")
driver.get_screenshot_as_file("./img/img01.jpg")

验证码
说明:Selenium中对cookie操作提供相应的方法 方法:1. get_cookie(name) --> 获取指定cookie name:为cookie的名称
2. get_cookies() --> 获取本网站所有本地cookies
3. add_cookie(cookie_dict) --> 添加cookie cookie_dict:一个字典对象,必选的键包括:“name” and “value”

例子:

from selenium import webdriver import time driver = webdriver.Firefox() driver.get("https://www.baidu.com") driver.add_cookie({'name':'BDUSS','value':'根据实际填写'}) time.sleep(3) driver.refresh() time.sleep(3) driver.quit()

web自动化学习之selenium安装喝浏览器驱动和元素定位相关推荐

  1. web自动化测试python+selenium学习总结----selenium安装、浏览器驱动下载

    一.安装selenium 命令安装selenium库 :pip  install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去s ...

  2. 安装Chrome 浏览器驱动

    python+selenium+unittest 安装Chrome 浏览器驱动 转载自:https://blog.csdn.net/weixin_44318830/article/details/10 ...

  3. selenium启动常用浏览器驱动方式

    文章目录 selenium 启动常用浏览器驱动方式 一.启动 Chrome 浏览器 二.启动 IE 浏览器 三.启动 Edge 浏览器 四.启动 Opera 浏览器 五.启动 Safari 浏览器 六 ...

  4. 整理的selenium WebDriver提供的8种元素定位方法

    selenium WebDriver提供的8种元素定位方法: (1)find_element_by_id() :id 定位 ,顾名思义,就是通过标签的id属性值来定位元素 (2) find_eleme ...

  5. WEB自动化-(RFS)RobotFramework+Selenium框架介绍测试流程详解

    各个驱动下载地址: http://www.seleniumhq.org/download/ 一.RFS介绍 1.概念 RFS框架:RobotFramework+Selenium框架 2.特点 2.1通 ...

  6. Selenium3 + Python3自动化测试系列一——安装Python+selenium及selenium3 浏览器驱动

    一.安装Python https://www.python.org/downloads/ 验证Python是否安装成功.打开Windows命令提示符(cmd),输入python,回车 注意:在安装的过 ...

  7. MacOS系统下selenium之火狐浏览器驱动firefoxdriver安装

    MacOS系统selenium3.141.0之火狐浏览器驱动firefoxdriver安装 fireFoxdriver.exe各版本下载链接](http://ftp.mozilla.org/pub/f ...

  8. selenium+unittest自动化测试(二)---浏览器控制及元素定位的方法

    目录 一.浏览器控制方法 二.元素定位的方法 1.id定位 2.name定位 3.class定位 4.tag定位 5.link_text定位 6.partial_link_text定位 7.XPath ...

  9. Selenium+WebDriver 各浏览器驱动下载与版本对应

    一.chromedriver要与chrome版本对应 chromedriver与chrome浏览器版本对应表(记得就会更新): chromedriver版本 支持的Chrome版本 v2.36 v64 ...

最新文章

  1. Linux添加用户组和添加用户
  2. 《Android传感器开发与智能设备案例实战》——导读
  3. 【C#串口编程计划】C#通讯类库构建
  4. 理解特征统计偏差、方差、平均值、中位数、百分数等等
  5. C++知识点62——模板实参推断与函数模板的特化
  6. 数据结构和算法之——跳表
  7. Socket编程(C语言实现)—— 为什么流式传输类似于管道?不区分边界?
  8. 018_Jedis的Hash数据类型
  9. sqlserver 中统计信息语句
  10. 最大值_Leetcode2 | 滑动窗口最大值(Q239)
  11. Xshell家庭版下载
  12. markdown 流程图js_如何在Markdown中画流程图
  13. “按字典序输出方案” 解决方法
  14. Windows系统下的socket编程
  15. Java解析X509证书代码
  16. 正则表达式:提取数字和小数点
  17. MySQL 报错1449:The user specified as a definer (’mysql.infoschema‘@’localhost‘) does not exist
  18. 关于DS12C887 以外部RAM方式访问
  19. 运行时服务(二)、warnings模块
  20. 也许是国内最全“智能音箱”评测,教你如何选 AI 音箱?

热门文章

  1. 小白也能动手搭建属于自己的博客网站
  2. springboot实现短信发送验证码及消息队列发送注册成功短信
  3. AbMole科研-THZ1通过抑制自噬增强Sirolimus诱导的细胞毒性
  4. php5.23升级,5.23 - php中文网作业 - php中文网博客
  5. 【越好奇,越强大】伯克利研究人员使用内在激励,教AI学会好奇
  6. leetcode:1168. 水资源分配优化【思维转换 + 最小生成树】
  7. 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇...
  8. openjudge 1.7.11 潜伏者
  9. 极高水平的电吉他音源 Orange Tree Samples Evolution Stratosphere Kontakt
  10. 王者荣耀微信哪个服务器人多,王者荣耀微信区和qq区哪个厉害