Python自动化测试框架Selenium

安装Selenium参考

注意事项

Chromedriver版本要和Chrome版本对应
https://npm.taobao.org/mirrors/chromedriver/   # Driver下载
Chromedriver放在Python解释器目录下

获取不到元素时查看 查看标签是否在iframe表单中

调试代码时可以使用指定端口号进行分步调试

如果不会编写Xpath语句可以在浏览器 F12---选中元素---右键--copy---xpath

可在浏览器调试窗口中Ctrl+f 粘贴Xpath语法查看选中的元素

指定端口启动浏览器  CMD中输入
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

Xpath语法

根据标签属性定位
//标签名[@属性名='属性值']/下一级标签名
* = 通配符    @href = 获取a标签内的href属性值  [1] = 第1个form标签
demo:
    //div[@class="outerContainer"]/form[1]
    //*[@id="award"]/a/@href

根据标签内容定位
//标签名[contains(text(), '标签内容')]/下一级标签名
contains = 包含     text() = 精确匹配
demo
    //span[contains(text(), '其它')]/a
    //span[(text()='4')]

实例化对象

# 下载selenium依赖包
pip install selenium 

# 导包
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chrome

# 实例化Options()对象
chrome_options = Options()
# 添加属性
chrome_options.add_argument('--headless')     # 使用无头浏览器  :没有界面
chrome_options.add_argument('--no-sandbox')   # 使用开发者模式
chrome_options.add_argument('--incognito')    # 使用无痕浏览

driver = Chrome(options=chrome_options)

selenium设置属性

无界面化.
.add_argument('--headless')
关闭GPU加速
.add_argument('--disable-gpu')
开发者模式
.add_argument('--no-sandbox')
设置窗口大小, 窗口大小会有影响.
.add_argument('--window-size=1366,768')
访问指定端口的浏览器
.add_experimental_option('debuggerAddress', '127.0.0.1:9222')
无痕浏览
.add_argument('--incognito')

在cmd中输入,指定端口打开浏览器
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

标签定位

使用 xpath语法进行定位
driver.find_element_by_xpath("//input[@placeholder='请输入研发活动名称']")
driver.find_element(By.XPATH,"//span[contains(text(), '添加')]")

使用js语法进行定位
driver.execute_script(js)

使用css进行定位
driver.find_element(By.CSS_SELECTOR, 'css')

使用标签id名称进行定位
driver.find_element_by_id(id_name)  # 获取单个元素
driver.find_elements_by_id(id_name)  # 获取多个元素

使用class类名进行定位
driver.find_element_by_class_name(class_name)  # 获取单个元素
driver.find_elements_by_class_name(class_name)  # 获取多个元素


获取多个元素
driver.find_elements() 

全局等待
driver.implicitly_wait(3)

最大化
driver.maximize_window()

Driver对象中的方法

rst = driver.find_element(By.XPATH,"//span[contains(text(), '添加')]")
rst.text                                获取内容
rst.click()                             对元素进行点击
rst.clear()                             清空内容
rst.get_attribute(‘href’)               获取标签内的属性值
rst.send_keys('276016')                 输入内容

切换标签页

driver.switch_to.window(driver.window_handles[0])  # 0:第几个
handle = driver.current_window_handle  # 查看当前标签页 Handle
driver.switch_to.window(handle)  # 切换到当前标签页
Demo:
# 获取当前窗口句柄(窗口A)
handle = driver.current_window_handle

# 打开一个新的窗口
driver.find_element_by_id('xx').click()

# 获取当前所有窗口句柄(窗口A、B)
handles = driver.window_handles

# 对窗口进行遍历
for newhandle in handles:
    # 筛选新打开的窗口B
    if newhandle!=handle:
        # 切换到新打开的窗口B
        driver.switch_to.window(newhandle)

        # 在新打开的窗口B中操作
        driver.find_element_by_id('xx').click()

        # 关闭当前窗口B
        driver.close()

        # 切换回窗口A
        self.driver.switch_to.window(handles[0])

切换表单

根据名称切换frame表单
driver.switch_to.frame("main")

根据名称切换iframe表单
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))

切换到最外层表单
driver.switch_to.default_content()

切换到上级表单
driver.switch_to.parent_frame()

使用键盘

driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER) 
回车键 Keys.ENTER
删除键 Keys.BACK_SPACE
空格键 Keys.SPACE
制表键 Keys.TAB
回退键 Keys.ESCAPE
刷新键 Keys.F5
上键   Keys.UP
下键  Keys.DOWN
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)

 Demo

import time

from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chrome

# 实例化Options()对象
chrome_options = Options()
# 添加属性

chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--incognito')
driver = Chrome(options=chrome_options)

# 打开百度
driver.get('http://www.baidu.com')

# 清空并输入文字
driver.find_element_by_xpath('//input[@id="kw"]').clear()
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('Python 天下第一')

# 点击"百度一下"
driver.find_element_by_xpath('//input[@id="su"]').click()

# 最大化浏览器
driver.maximize_window()

time.sleep(10)

# 退出
driver.quit()

 

--------------------------------------------------如有不足之处敬请谅解,评论区留言加以改正。--------------------------------------

 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里城墙

欢迎各位观众老爷打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值