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
    评论
Selenium 是一个用于自动化 Web 浏览器操作的 Python 库。它可以模拟用户在浏览器中的行为,如点击、输入、提交表单等。Selenium 可以与各种不同的浏览器(如 Chrome、Firefox、Edge 等)进行集成,并且支持多种编程语言,包括 Python。 在 Python 中使用 Selenium 进行自动化测试,你需要首先安装 Selenium 库。你可以通过 pip 命令来安装,如下所示: ``` pip install selenium ``` 安装完毕后,你还需要下载对应浏览器的 WebDriver,WebDriver 是 Selenium 的一个核心组件,它负责与浏览器进行通信。你可以通过浏览器的官方网站或者 Selenium 官方文档找到对应的 WebDriver 下载地址。 一旦安装好 Selenium 和对应的 WebDriver,你就可以开始编写自动化测试代码了。你可以使用 Selenium 提供的 API 来控制浏览器进行各种操作,如打开网页、查找元素、填写表单等。 以下是一个简单的示例代码,演示了如何使用 SeleniumChrome 浏览器中打开百度并搜索关键词: ```python from selenium import webdriver # 创建一个 Chrome 浏览器对象 driver = webdriver.Chrome() # 打开百度首页 driver.get("https://www.baidu.com") # 根据 ID 获取搜索框元素,并输入关键词 search_box = driver.find_element_by_id("kw") search_box.send_keys("Python 自动化测试") # 提交搜索表单 search_box.submit() # 关闭浏览器 driver.quit() ``` 通过编写类似这样的代码,你可以实现更复杂的自动化测试功能,如点击按钮、选择下拉框、验证页面元素等。Selenium 还提供了丰富的 API 文档和示例代码,可以帮助你更好地理解和使用它。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

百里城墙

欢迎各位观众老爷打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值