基于Python的selenium学习(方法合集)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于Python的selenium学习(方法合集),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7293字,纯文字阅读大概需要11分钟。
内容图文
![基于Python的selenium学习(方法合集)](/upload/InfoBanner/zyjiaocheng/603/644bc59531db4fde963cb6fff55408d5.jpg)
1、webDriver方法属性
chrome浏览器
from selenium import webdriver
# Chrome浏览器驱动
self.driver = webdriver.Chrome()
# 打开的网址
self.driver.get('http://www.baidu.com')
1.1)窗口最大化
self.driver.maximize_window()
1.2)关闭浏览器
self.driver.quit()
1.3)关闭当前tab页
self.driver.close()
1.4)刷新
self.driver.refresh()
1.5)后退
self.driver.back()
1.6)前进
self.driver.forward()
1.7)获取当前网页标题
self.driver.title
1.8)获取当前浏览器名称
self.driver.name
1.9)获取当前网页地址url
self.driver.current_url
1.10)获取窗口句柄
self.driver.window_handles # 所有句柄
self.driver.current_window_handle # 当前窗口句柄
1.11)切换窗口
self.driver.switch_to.window(w)
1.12)切换到alert
self.driver.switch_to.alert
1.13)切换到frame
self.driver.switch_to.frame(f)
1.14)切换到活动元素
self.driver.switch_to.active_element
2、元素定位
2.1)通过id定位元素
self.driver.find_element_by_id('kw').send_keys('selenium')
self.driver.find_element_by_id('su').click()
2.2)通过标签名称定位元素
# find_element_by_name()可能返回多个元素,查找的时候返回第1个
# find_elements_by_name()返回一个集合
self.driver.find_element_by_name('wd').send_keys('selenium')
2.3)通过链接文本定位元素
self.driver.find_element_by_link_text('百度首页').click()
2.4)通过部分链接文本定位
self.driver.find_element_by_partial_link_text('首页').click()
2.5)通过xpath定位
# 熟悉xpath语法
self.driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
2.6)通过标签名称定位
input = self.driver.find_element_by_tag_name('input')[0] # tag太多了
print(input)
2.7)通过css选择器定位
# copy -> css selector
self.driver.find_element_by_css_selector('#kw').send_keys('百度文库')
2.8)通过css class定位
self.driver.find_element_by_class_name('s_ipt').send_keys('selenium')
补充:也可直接用find_element()方法
from selenium.webdriver.common.by import By
self.driver.find_element(By.ID, value='kw').send_keys('selenium')
3、WebElement常用属性
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
ele = driver.find_element_by_id('kw')
3.1)标示
print(ele.id) # b9012f3c-c184-41b1-879a-a2f78304e3c9
3.2)宽高
print(ele.size) # {'height': 44, 'width': 548}
3.3)宽高和坐标
print(ele.rect) # {'height': 44, 'width': 548, 'x': 441, 'y': 188.40000915527344}
3.4)标签名称
print(ele.tag_name) # input
3.5)文本内容
print(ele.text)
4、WebElement的方法
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
ele = driver.find_element_by_id('kw')
4.1)单击
ele.click()
4.2)输入内容
ele.send_keys('selenium')
4.3)获取属性值
print(ele.get_attribute('type')) # type/name/value text
4.4)是否被选中
print(ele.is_selected()) # False
4.5)是否可用
print(ele.is_enabled()) # True
4.6)是否显示
print(ele.is_displayed()) # True
4.7)清空内容
ele.clear()
4.8)css属性值
print(ele.value_of_css_property('value'))
5、Select常用方法
from selenium.webdriver.support.select import Select
selectButton = self.driver.find_element_by_id('provise')
selectElement = Select(selectButton)
5.1)根据索引选择(deselect_by_index:反选)
selectElement.select_by_index(4)
5.2)根据值选择(deselect_by_value:反选)
selectElement.select_by_value('hangzhou')
5.3)根据文本选择(deselect_by_visible_text:反选)
selectElement.select_by_visible_text('杭州')
5.4)获取所有选项
for option in selectElement.options:
print(option.text)
5.5)所有选中选项(deselect_all:反选)
selectElement.all_selected_options()
5.6)第一个选择项
selectElement.first_selected_option()
6、弹框的处理:alert、confirm、prompt
弹框类型:
alert:提示
confirm:用于确认
prompt:输入内容
方法/属性:
6.1)accept():接受
alert = self.driver.switch_to.alert
print(alert.text)
alert.accept()
6.2)dismiss():取消
text:显示的文本
confirm = self.driver.switch_to.alert
print(confirm.text)
confirm.dismiss()
6.3)send_keys(“keys”):输入内容
prompt= self.driver.switch_to.alert
prompt.send_keys("20")
prompt.accept()
7、frame、iframe定位
frame标签种类:
frameset(和普通标签一样)/frame/iframe:
使用方法:
switch_to.frame(reference):切换frame,reference是传入的参数(id、name、index等)
switch_to.default_content():返回主文档
switch_to.parent_frame():返回父文档
top = driver.find_element_by_name('top')
driver.switch_to.frame(top)
driver.find_element_by_xpath('XPATH')
8、WebDriverWait-显示等待
8.1) 模块引入
from selenium.webdriver.support.wait import WebDriverWait
8.2)WebDriverWait参数介绍:
driver:传入WebDriver实例
timeout:超时时间,等待的最长时间
poll_frequency:调用until或until_not中的方法的间隔时间,默认0.5秒
ignored_exceptions:忽略的异常
8.3)WebDriverWait方法介绍:
until(method, message)、until_not(method, message)
method:在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False
message:如果超时,抛出TimeoutException,将message传入异常
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
WebDriverWait(driver, 2).until(EC.title_is('selenium_百度搜索'))
补充:expected_conditions模块:用于判断网页上的元素是否存在等,一般与WebDriverWait配合使用
模块引入:
from selenium.webdriver.support import expected_conditions as EC
方法介绍:
(1) title_is(‘str’):判断当前页面的title是否等于str
(2) EC.title_contains(‘str’):判断当前页面的title是否包含str
(3) EC.url_contains(‘url’):判断当前页面的url是否包含url
(4) EC.url_matches(‘expression’):判断当前页面的url是否满足字符串正则表达式匹配
(5) EC.presence_of_element_located((By.ID, ‘id’)):判断元素是否出现,只要有一个元素出现,返回元素对象
(6) EC.visibility_of(driver.find_element(By.ID, ‘id’)):判断元素是否可见,返回元素对象
(7) EC.text_to_be_present_in_element((By.NAME, ‘name’), ‘text’):判断元素是否包含指定文本,返回布尔值
(8) EC.frame_to_be_available_and_switch_to_it(By.xpath, ‘path’):判断该frame是否可以切换,可以则,返回True并且切换
(9) EC.element_to_be_clickable((By.NAME, ‘name’)):判断某个元素是否可见且可点击,是返回该元素,否则返回False
(10) EC.element_to_be_selected(driver.find_element(By.xpath, ‘path’)):判断某个元素是否被选中,一般用在下拉列表
(11) EC.alert_is_present():判断页面上是否存在alert,如果有就切换到alert并返回alert的内容
9、Selenium等待条件 - ActionChains类
使用方法:
from selenium.webdriver import ActionChains
ActionChains(driver).click(btn).perform()
常用方法:
selenium鼠标和键盘事件 - ActionChains类
10、selenium屏幕截图
方法:
(1)save_screenshot(filename):获取当前屏幕截图并保存为指定文件,filename为文件名(包含文件路径)
(2)get_screenshot_as_base64():获取当前屏幕截图base64编码字符串
(3)get_screenshot_as_file(filename)获取当前的屏幕截图,使用完整路径
(4)get_screenshot_as_png():获取当前屏幕截图的二进制文件数据
import time
filePath = 'D:\Python\\01Demo\\venv\phone'
fileName = time.strftime('%Y%m%d%H%m%S', time.localtime())+'.png'
print(filePath + '\\' + fileName)
self.driver.save_screenshot(filePath + '\\' + fileName)
11、PyAutoGUI:图形用户界面自动化工具
import pyautogui
# 确定鼠标当前位置
pyautogui.positon()
# 移动
pyautogui.moveTo(x,y)
# 点击
pyautogui.mouseDown()
pyautogui.mouseUp()
pyautogui.click()
pyautogui.doubleClick()
pyautogui.middleClick()
pyautogui.rightClick()
# 拖动
pyautogui.dragTo(x,y)
# 控制键盘
pyautogui.typewrite(s)
内容总结
以上是互联网集市为您收集整理的基于Python的selenium学习(方法合集)全部内容,希望文章能够帮你解决基于Python的selenium学习(方法合集)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。