Published: 07 May 2019 › Updated: 07 May 2019

Python+Selenium+Chromedriver 自动化测试(上)
---恢复内容开始---主要来写一些Selenium函数的使用方法
# 导入webdriver方法,用来调用浏览器,需要自行下载好相应的驱动
from selenium import webdriver
# 执行便会启动浏览器
driver = webdriver.Chrome()
# 获取一个网页页面
driver.get("http://m.baidu.com")
# 参数数字为像素点,设置浏览器页面大小
print("设置浏览器宽480、高800显示")
driver.set_window_size(480, 800)
# 浏览器的前进和后退
driver.forward()
driver.back()
# 刷新
driver.refresh()
#退出浏览器
driver.quit()
上面的都是基础操作,下面来看一些常用方法
# 首先得需要有一些基本定位的概念,定位后在对这些元素进行操作
# clear() 清除文本
# send_keys() 写文本信息
# click() 单击。若元素不能单击也不会报错
# submit() 提交表单,类似回车方法
#
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 先定位搜索框,然后将搜索框中的内容清空
driver.find_element_by_id("kw").clear()
# 先定位搜索框,然后再搜索框中输入"selenium"
driver.find_element_by_id("kw").send_keys("selenium")
# 先定位搜索按钮,然后点击搜索。接着就会看到搜索后的内容
driver.find_element_by_id("su").click()
driver.back()
driver.find_element_by_id("kw").send_keys("selenium")
# submit定位搜索按钮和搜索框都可以成功执行
# driver.find_element_by_id("su").submit()
driver.find_element_by_id("kw").submit()
driver.quit()
其他方法
#size 返回元素的尺寸
#text 获取元素的文本
#get_attribute(name) 获得属性值
#is_displayed() 设置该元素是否用户可见
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 获得输入框的尺寸
size = driver.find_element_by_id('kw').size
print(size)
# 返回百度页面底部备案信息
text = driver.find_element_by_id("cp").text
print(text)
# 返回元素的属性值, 可以是 id、 name、 type 或其他任意属性
attribute = driver.find_element_by_id("kw").get_attribute('type')
print(attribute)
# 返回元素的结果是否可见, 返回结果为 True 或 False
result = driver.find_element_by_id("kw").is_displayed()
print(result)
driver.quit()
鼠标操作
# 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供
# ActionChains 类提供了鼠标操作的常用方法
# perform() 执行所有 ActionChains 中存储的行为
# context_click() 右击
# double_click() 双击
# drag_and_drop() 拖动
# move_to_element() 鼠标悬停
from selenium import webdriver
# 导入提供鼠标操作的 ActionChains 类。
from selenium.webdriver.common.action_chains import ActionChains
# from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")
# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(above).perform()
# 导入提供鼠标操作的 ActionChains 类
from selenium.webdriver import ActionChains
# 调用 ActionChains()类, 将浏览器驱动 driver 作为参数传入
ActionChains(driver)
# context_click()方法用于模拟鼠标右键操作, 在调用时需要指定元素定位
move_to_element(above)
# 执行所有 ActionChains 中存储的行为, 可以理解成是对整个操作的提交动作
perform()
鼠标常见操作
# click(on_element=None)
# 单击鼠标左键
#
# click_and_hold(on_element=None)
# 点击鼠标左键,不松开
#
# context_click(on_element=None)
# 点击鼠标右键
#
# double_click(on_element=None)
# 双击鼠标左键
#
# drag_and_drop(source, target)
# 拖拽到某个元素然后松开
#
# drag_and_drop_by_offset(source, xoffset, yoffset)
# 拖拽到某个坐标然后松开
#
# key_down(value, element=None)
# 按下某个键盘上的键
#
# key_up(value, element=None)
# 松开某个键
#
# move_by_offset(xoffset, yoffset)
# 鼠标从当前位置移动到某个坐标
#
# move_to_element(to_element)
# 鼠标移动到某个元素
#
# move_to_element_with_offset(to_element, xoffset, yoffset)
# 移动到距某个元素(左上角坐标)多少距离的位置
#
# perform()
# 执行链中的所有动作
#
# release(on_element=None)
# 在某个元素位置松开鼠标左键
#
# send_keys(*keys_to_send)
# 发送某个键到当前焦点的元素
#
# send_keys_to_element(element, *keys_to_send)
# 发送某个键到指定元素
键盘操作
# Keys()类提供了键盘上几乎所有按键的方法,甚至是组合键,如 Ctrl+A、 Ctrl+C 等。
from selenium import webdriver
# 引入 Keys 模块
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
# 删除多输入的一个 m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
# 输入空格键+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("教程")
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
# 通过回车键来代替单击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
driver.quit()
键盘常见操作
# send_keys(Keys.BACK_SPACE)
# 删除键(BackSpace)
#
# send_keys(Keys.SPACE)
# 空格键(Space)
#
# send_keys(Keys.TAB)
# 制表键(Tab)
#
# send_keys(Keys.ESCAPE)
# 回退键(Esc)
#
# send_keys(Keys.ENTER)
# 回车键(Enter)
#
# send_keys(Keys.CONTROL,‘a’)
# 全选(Ctrl+A)
#
# send_keys(Keys.CONTROL,‘c’)
# 复制(Ctrl+C)
#
# send_keys(Keys.CONTROL,‘x’)
# 剪切(Ctrl+X)
#
# send_keys(Keys.CONTROL,‘v’)
# 粘贴(Ctrl+V)
#
# send_keys(Keys.F1)
# 键盘 F1
# ……
# send_keys(Keys.F12)
# 键盘 F12Leave Python+Selenium+Chromedriver 自动化测试(上) to:
Read more #cn posts
Best Posts From LOVE TV
We have not curated any of lovetv's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From LOVE TV
- 《大侦探皮卡丘》:治愈感满满,用萌气化解亲情危机
- Python+Selenium+Chrome 自动化测试(下)
- Python+Selenium+Chromedriver 自动化测试(上)
- RivenCloud极云网络:2核1G内存1Gbps带宽1000GB月流量KVM架构,只需2.5美元/月
- HawkHost老鹰主机,美国、香港虚拟主机6折促销,10G SSD硬盘 不限流量,只需145元/年
- CloudCone洛杉矶MC机房独立服务器,4核8GB内存2TB HDD或240GB SSD硬盘100M带宽不限流量,月付59美元
- JustHost新西伯利亚VPS主机,1核512GB内存5GB HDD硬盘200Mbps带宽KVM架构,月付最低8.9元起
- zji高配IPMI香港服务器,2*E5-2660,256G内存,6x1T SSD,100Mbps独享带宽,CN2低延时直连,带ddos防御
- HostDare洛杉矶QN机房终身75折,美国CN2三网直连KVM架构,1核756M内存35GBHDD80Mbps带宽600GB月流量,每年只需29.99美元
- wikihost香港微基主机Cera机房,KVM架构三网CMI直连大带宽香港高防VPS,首月五折购买,终身75折