IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Selenium学习 -> 正文阅读

[开发测试]Selenium学习

准备

1、安装selenium,
使用python语言,则windows在终端输入进行安装selenium
pip install selenium

2、安装浏览器对应版本的驱动

一个简单的案例(使用selenium)

from selenium import webdriver

# 创建webdriver对象,指明使用chrome浏览器驱动
#后面的目录为浏览器驱动的程序目录
wd = webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')

# 调用webdirver对象的get方法,可以让浏览器打开指定网址
wd.get('https://www.baidu.com')

# 执行完自动化代码后,关闭浏览器窗口,调用webdriver对象的quit方法
wd.quit()

# 将chromedriver所在目录加入环境变量Path中,再写代码时,就可以无需指定浏览器驱动路径了如:
# wd = webdriver.Chrome()

# 关闭chromedriver打印信息

# 缺省情况下,chromedrive被启动后,会在屏幕上输出不少日志信息,如下
# DevTools listening on ws://127.0.0.1:19727/devtools/browser/c19306ca-e512-4f5f-b9c7-f13aec506ab7
# [21564:14044:0228/160456.334:ERROR:device_event_log_impl.cc(211)] [16:04:56.333] Bluetooth: bluetooth_adapter_winrt.cc:1072 Getting Default Adapter failed.

# 关闭改信息
options = webdriver.ChromeOptions()
options.add_experimental_option(
    'exclueSwitches',['enable-logging'])

wd = webdriver.Chrome(r'D:\webdrivers\chromedriver.exe',options=options#这里指定optons参数

选择元素的基本方法

选择单个元素的基本方法

(1)根据ID选择元素

from selenium import webdriver
from selenium.webdriver.common.by import By

# 关闭chromedriver打印信息
options = webdriver.ChromeOptions()
options.add_experimental_option(
    'excludeSwitches',['enable-logging']
)
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe',options=options)

wd.get('http://www.baidu.com')

# 根据id选择元素,返回的就是该元素对应的webelement对象
element = wd.find_element(By.ID,'kw')

(2)根据类名选择元素
wd.find_element(By.CLASS_NAME,'password'))

(3)根据Tag名选择元素
wd.find_element(By.TAG_NAME,'input')

(4)根据CSS选择器选中元素
wd.find_element(By.CSS_SELECTOR,'button[type=submit').
(CSS选择器会再下面详细讲)

选择多个元素的基本方法

"""选择多个元素的基本方法,根据类名class_name来选择元素"""

from selenium import webdriver
from selenium.webdriver.common.by import By

# 关闭webdriver打印的日志
options = webdriver.ChromeOptions()
options.add_experimental_option(
    'excludeSwitches',['enable-logging']
)
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe',options=options)
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')

# 根据class name选择元素,返回的是一个列表
# 里面都是class属性值为animal的元素对应的WebElement对象
elements = wd.find_elements(By.CLASS_NAME,'animal')

提示:
等待界面元素出现,当进行网页操作的时候,有的元素内容不是可以立即出现的,可能会等待一段时间
当页面还没加载出来的时候,根本就查找不到元素,代码执行的速度比服务器响应的速度快.
所以我们可以通过设置sleep时间来等待几秒钟,等服务器返回结果后,再去查找元素使用:from time import sleep sleep(2)
但是设置等待时间多长合适呢?
这个时候selenium就提供了一个implicitly_wait方法,该方法接收一个参数,用来指定最大的等待时长
使用:wd.implicitly_wait(10)
注意:implicitly_wait是指找不到元素了才会调用这个方法,每隔半秒中去界面上查看一次.
但是当元素出来了,但是元素中的内容还没加载出来,这个时候就需要我们去使用sleep()等待

操控元素的基本方法

操控元素通常包括:
1、点击元素
2、再元素中输入字符串,通常是对输入框这样的元素
3、获取元素包含的信息,比如文本内容,元素的属性等

(1)点击元素(.click())方法
调用webelement对象的click方法去点击元素的时候,浏览器接收到自动化命令,点击的是该元素的中心点位置
wd.find_element(By.CSS_SELECTOR,'button[type=submit').click()

(2)输入框:
输入字符串:调用元素webelement对象的send_keys()方法
清除输入框中的内容:调用webelement对象的clear()方法
wd.find_element(By.TAG_NAME,'input').send_keys('sdfsdf')

(3)获取元素信息
a.获取元素属性使用:

element.get_attribute('class')

b.获取整个元素对应的HTML文本内容:

element.get_attribute('outerHTML')

c.获取某个元素内部的HTML文本内容:

element.get_attribute('innerHTML')

d.获取输入框里面的输入的文本:

element.get_attribute('value')

e.获取元素展示在界面上的文本内容:

element.get_attribute('innerText')


element.get_attribute('textContent')

CSS表达式

css selector 语法选择元素

选择单个、多个元素:

选择单个元素
find_element(By.CSS_SELECTOR,CSS Selector参数)

选择多个元素
find_elements(By.CSS_SELECTOR,CSS Selector参数)

根据id选择元素,需要在id前加上 #

from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_experimental_option(
    'excludeSwitches',['enable-logging']
)

wb = webdriver.Chrome(r'd:/webdrivers/chromedriver.exe',options=options)
wb.get('http://cdn1.python3.vip/files/selenium/sample1.html')
elements = wb.find_element(By.CSS_SELECTOR,'#searchtext')
elements.send_keys('你好')

根据class选择元素,需要在class前加上.

from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_experimental_option(
    'excludeSwitches',['enable-logging']
)

wb = webdriver.Chrome(r'd:/webdrivers/chromedriver.exe',options=options)
wb.get('http://cdn1.python3.vip/files/selenium/sample1.html')
elements = wb.find_elements(By.CLASS_NAME,'animal')
# 或是写为 elements = wb.find_elements(By.CLASS_NAME,'.animal')
for element in elements:
    print(element.text)

选择子元素和后代元素

子元素

若元素2是元素1 的直接子元素,css selector选择子元素的语法是:

元素1 > 元素2
这个最终选择的元素是元素2,并且要求这个元素2是元素1的直接子元素

后代元素

若元素2 是元素1 的后代元素,css selector选择后代元素的语法是:

元素1 元素2
中间是一个或多个空格隔开

根据属性选择

"""根据属性选择"""

from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_experimental_option(
    'excludeSwitches',['enable-logging']
)

wd = webdriver.Chrome(r'd:/webdrivers/chromedriver.exe',options=options)
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')

element = wd.find_element(By.CSS_SELECTOR,'[href="http://www.miitbeian.gov.cn"]')
print(element.get_attribute('outerHTML'))
# 前面可以加上标签名的限制,比如div[class='SKnet'] 表示选择所有标签名为div,且class属性值为SKnet的元素

选择属性值包含某个字符串的元素

例如:选择a节点,里面的href属性包含了miitbeian字符串, 可以写成

a[href*="miitbeian"]

选择属性值以某个字符串开头的元素

例如:选择a节点,里面的href属性以http开头,可以写成
a[href^="http"]

选择属性值以某个字符串结尾的元素

a[href$="gov,cn"]

如果一个元素有多个属性

<div class="misc" ctype="gun">快乐学习</div>

CSS选择器可以指定选择的元素要同时具有多个属性的限制,像这样**:div[class=misc][ctype=gun]**

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:38:39  更:2021-11-22 12:40:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:48:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码