python自动化常用模块

python自动化常用函数


导入time模块

import time

导入ActionChains模块(鼠标)

from selenium.webdriver.common.action_chains import ActionChains

导入Keys模块(键盘)

from selenium.webdriver.common.keys import Keys

导入Select模块(下拉框)

from selenium.webdriver.support.select import Select

导入WebdriverWait

from selenium.webdriver.support.wait import WebDriverWait

导入EC

from selenium.webdriver.support import expected_conditions as ec

浏览器基本操作(如打开浏览器、输入地址、网页最大化等)

一、打开网站

从selenium里面导入webdriver模块

from selenium import webdriver

打开谷歌浏览器

driver = webdriver.Chrome()

打开百度

driver.get("http://www.baidu.com")

二、设置等待时间

设置等待时间2秒,也可以是小数,单位是秒

time.sleep(2)

三、页面刷新

有时候页面操作后,数据可能没有及时同步,需要重新刷新

可以模拟刷新页面操作,相当于浏览器的刷新按钮

driver.refresh()

四、前进和后退

当打开俩个页面时,浏览器可以返回上一页,也可以切换到下一页

上一页

driver.back()

下一页

driver.forward()

五、设置窗口大小

设置窗口大小为600*800

drive.set_window_size(600, 800)

将窗口最大化

driver.maximize_window()

六、截屏

截屏后设置制定的保存路径+文件名称+后缀

driver.get_screenshot_as_file("C:\\Users\\Administrator\\Desktop\\test.jpg")

七、退出浏览器

close用于关闭当前窗口,打开窗口多的时候就可以用close关闭部分窗口

driver.close()

quit用于结束进程,关闭所有窗口

driver.quit()

Selenium元素定位方法:name定位

driver.find_element_by_name("username").clear()
driver.find_element_by_name("username").send_keys("admin")

Selenium元素定位方法:xpath定位

driver.find_element_by_xpath("/html/body/div[3]/form/div[3]/div/input").send_keys("admin.syzg")

Selenium元素定位方法:class_name定位

driver.find_element_by_class_name("btn").click()

Selenium元素定位方法:id定位

driver.find_element_by_id("sidebar_softs").click()

Selenium元素定位方法:link_text定位

driver.find_element_by_link_text(" 文档和资源").click()

Selenium元素定位方法:partial_link_text定位

driver.find_element_by_partial_link_text("添").click()

Selenium元素定位方法:css_selector定位

driver.find_element_by_css_selector("#res_title").send_keys("测试文档")

Selenium复数元素定位方法

# 1、id定位

als = driver.find_elements_by_id('i1')
als[0].send_keys('id定位')

# 2、class定位

bls = driver.find_elements_by_class_name('classname')
bls[0].send_keys('class定位')

# 3、css selector定位

cls = driver.find_elements_by_css_selector('input')
cls[2].send_keys('定位到第三个input输入框')

# 4、name定位:按照标签中的name属性定位

dls = driver.find_elements_by_name('name')
dls[0].send_keys('name定位')

# 5、link_text 文本内容定位

els = driver.find_elements_by_link_text('跳转')
els[0].click()

# 6、partial_link_text 模糊文本内容匹配

fls = driver.find_elements_by_partial_link_text('示例')
fls[0].click()

# 7、xpath 定位

gls = driver.find_elements_by_xpath('//input')
gls[4].send_keys('xpath 定位')

# 8、tag_name 标签名定位

hls = driver.find_elements_by_tag_name('input')
hls[5].send_keys('tag_name 标签名定位')

Selenium之鼠标模拟操作

使用前需要导入ActionChains类

from selenium.webdriver.common.action_chains import ActionChains

ActionChains类提供鼠标常用方法:

# perform()执行所有ActionChains中存储的行为
# context_click()右击
# double_click()双击
# drag_and_drop()拖到
# move_to_element()鼠标悬停

1.鼠标右击

定位到需要右击的元素

right_click = driver.find_element_by_id("xx")

对定位的元素执行右击操作

ActionChains(driver).context_click(right_click).perform()

2.鼠标双击

定位到需要双击的元素

double_click = driver.find_element_by_id("xx")
ActionChains(driver).double_click(double_click).perform()

3.鼠标拖动

开始位置:定位到元素的原位置

source = driver.find_element_by_id("xx")

结束位置:定位到元素要移动的目标位置

target = driver.find_element_by_id("xx")

执行元素的托放操作

ActionChains(driver).drag_and_drop(source, target).perform()

4.鼠标悬停

定位到要悬停的元素

move = driver.find_element_by_id("xx")

对定位的元素执行悬停操作

ActionChains(driver).move_to_element(move).perform()

Selenium之键盘模拟操作

# 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)

回车键 Keys.ENTER

删除键 Keys.BACK_SPACE

空格键 Keys.SPACE

制表键 Keys.TAB

回退键 Keys.ESCAPE

刷新键 Keys.F5

导入Keys模块

from selenium.webdriver.common.keys import Keys

举例:全选操作

driver.find_element_by_id('kw').send_keys('AAAAAAAAAAAA')
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')  # 注意这里组合键的输入。
time.sleep(10)
driver.quit()

举例:回车键操作

driver.get("http://cn.bing.com/")
driver.find_element_by_id('sb_form_q').send_keys('selenium')
driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER)   # 通过回车键来代替鼠标的左键
driver.quit()

submit使用

submit函数用于对信息进行提交,也可以使用click()进行代替,submit()要求提交对象是一个表单,click()更强调事件的独立性


Selenium之页面中下拉框的处理

导入Select模块

from selenium.webdriver.support.select import Select

根据索引选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_index("3")

根据value值选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_value("3线")

根据文本值选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_visible_text("3线")

Selenium之操作下拉滚动条方法

竖向滚动条拉到最底

js = "var q = document.documentElement.scrollTop = 10000"
driver.execute_script(js)

横向滚动条控制

js = "window.scrollTo(100,400);"
driver.execute_script(js)

Selenium之窗口切换

每个浏览器窗口都有一个唯一的属性句柄(handle)来表示当前窗口句柄、所有窗口句柄


窗口切换

导入WebdriverWait

from selenium.webdriver.support.wait import WebDriverWait

打开百度首页

driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')

获取当前窗口句柄

main_windows = driver.current_window_handle
print(main_windows)

进入注册

driver.find_element_by_link_text("登录").click()

这里加一个显示等待,不然有时会报找不到“立即注册这个元素”

WebDriverWait(driver, 20).until(lambda x: x.find_element_by_link_text("立即注册")).click()

获取当前所有打开的窗口句柄

all_windows = driver.window_handles
print(all_windows)

切换进注册页面

for handle in all_windows:
    if handle != main_windows:
        driver.switch_to.window(handle)

获取注册页面窗口句柄

register_windows = driver.current_window_handle
print(register_windows)

切换回百度首页

driver.switch_to.window(main_windows)
print(driver.title)

元素定位Selenium消息框处理(alert、confirm、prompt)

alert弹出个提示框(确定)

1、定位alert弹出框

点击页面元素,触发alert弹出框

driver.find_element_by_xpath('//*[@id="alert"]').click()

等待alert弹出框可见

WebDriverWait(driver, 20).until(ec.alert_is_present())

从html页面切换到alert弹框

alert = driver.switch_to.alert

获取alert的文本内容

print(alert.text)

选择“确定”

alert.accept()

confirm弹出个确认框(确定、取消)

2:定位confirm弹出框

driver.find_element_by_xpath('//*[@id="confirm"]').click()
time.sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
alert = driver.switch_to.alert
print(alert.text)

接受–选择“取消”

alert.dismiss()

prompt弹出个输入框(确定、取消)

3:定位prompt弹出框

driver.find_element_by_id("prompt").click()
time.sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
alert = driver.switch_to.alert
alert.send_keys("test")
time.sleep(5)
print(alert.text)

alert.dismiss()

alert.accept()
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python自动化测试模块是一组用于编写和执行自动化测试的工具和库。它们提供了丰富的功能和方法,使得测试过程更加简单和高效。以下是一些常用Python自动化测试模块: 1. unittest模块:unittest是Python内置的单元测试框架,它提供了一种标准的方式来编写和运行测试用例。它支持测试套件、断言、测试装置等功能,可以方便地进行单元测试。 2. pytest模块:pytest是一个功能强大且易于使用的Python测试框架。它支持自动发现测试用例、参数化测试、夹具(fixture)、插件等特性,可以灵活地组织和运行测试。 3. Selenium模块Selenium是一个用于Web应用程序测试的工具。它提供了一组API,可以模拟用户在浏览器中的操作,如点击、输入、提交表单等。通过Selenium,可以编写自动化测试脚本来验证Web应用程序的功能和交互。 4. requests模块:requests是一个简洁而优雅的HTTP库,用于发送HTTP请求和处理响应。在自动化测试中,可以使用requests模块发送HTTP请求,模拟用户与后端API进行交互,并对返回的数据进行断言和验证。 5. mock模块:mock是一个用于模拟和替代Python对象的库。在自动化测试中,有时需要模拟一些外部依赖或者隔离一些不可控因素,这时可以使用mock模块来创建虚拟对象,以便进行测试。 6. coverage模块:coverage是一个用于代码覆盖率分析的工具。它可以统计代码中哪些部分被执行过,哪些部分没有被执行到,从而帮助开发者评估测试的完整性和质量。 以上是一些常用Python自动化测试模块,它们可以帮助开发者编写可靠的自动化测试脚本,并提高软件质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值