python selenium 的简单应用
环境
简单说说需要的环境,这篇文章主要说应用
python3安装
浏览器安装
- Chrome浏览器:下载链接
- ChromeDriver:没有下载的同学可通过ChromeDriver下载链接下载,记得版本要与Chrome浏览器一致,下载完毕后放入对应的目录
- Windows:C:\Program Files (x86)\Google\Chrome\Application
- Mac:/usr/local/bin/
selenium安装
- selenium:pip install selenium
需要详细安装教程的同学可以百度下,有很多教程,可以在评论区留言
常用查找方法
单个元素
- find_element_by_id
- find_element_by_name
- find_element_by_xpath
- find_element_by_link_text
- find_element_by_partial_link_text
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
多个元素
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
例子
登录Jenkins
演示自动登录Jenkins后,进入某一个工程,咋们游戏测试感觉使用selenium的几率并不高,一般是测游戏后台的时候用,学会一些简单的应用感觉够用,点到即止,软测和咋们不一样
1.启动Chrome浏览器
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
2.打开我的Jenkins网站
driver.get("http://8.129.88.6:8080/login?from=%2F")
3.隐式等待网页加载完毕
driver.implicitly_wait(3)
4.断言标题
assert "Jenkins" in driver.title
5.根据name查找元素
elem = driver.find_element_by_name("j_username")
6.输入账号密码之前先清空输入栏
elem.clear()
elem.send_keys("tester")
elem = driver.find_element_by_name("j_password")
elem.clear()
elem.send_keys("xxx")
7.根据ID查找元素
elem = driver.find_element_by_id("remember_me")
8.正常调用点击
# elem.click()
# 上面点击方法失效用execute_script
driver.execute_script("arguments[0].click();", elem)
9.回车键
elem.send_keys(Keys.RETURN)
10.登录后切换句柄
driver.current_window_handle
# 另一种切换句柄
# driver.switch_to.window(driver.window_handles[0])
11.登录之后查找指定项目
elem = driver.find_element_by_id("job_client_build")
12.进入对应的项目
elem = driver.find_element_by_xpath('//*[@id="job_client_build"]/td[3]/a')
driver.execute_script("arguments[0].click();", elem)
13.执行完退出
driver.close()
14.完整代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File : lianxi.py
@Contact : 512759438@qq.com
@Author : Jian
"""
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 启动Chrome浏览器
driver = webdriver.Chrome()
# 打开我的Jenkins网站
driver.get("http://8.129.88.6:8080/login?from=%2F")
# 隐式等待网页加载完毕
driver.implicitly_wait(3)
# 断言标题
assert "Jenkins" in driver.title
# 根据name查找元素
elem = driver.find_element_by_name("j_username")
# 输入内容之前先清空
elem.clear()
elem.send_keys("admin")
elem = driver.find_element_by_name("j_password")
elem.clear()
elem.send_keys("xxx")
# 根据ID查找元素
elem = driver.find_element_by_id("remember_me")
# 正常调用点击
# elem.click()
# 上面点击方法失效用execute_script
driver.execute_script("arguments[0].click();", elem)
# 回车键
elem.send_keys(Keys.RETURN)
# 登录后切换句柄1
driver.current_window_handle
# 登录后切换句柄2
# driver.switch_to.window(driver.window_handles[0])
# 登录之后查找指定项目
elem = driver.find_element_by_id("job_client_build")
# 进入对应的项目
elem = driver.find_element_by_xpath('//*[@id="job_client_build"]/td[3]/a')
driver.execute_script("arguments[0].click();", elem)
# 退出
driver.close()
预约iPhone12 pro/proMax
早段时间国内iPhone12系列一直没货,发售当天黄牛一度加价1500元一台,迫不得已把目光转向了澳门,澳门虽然不加价但需要预约,试过澳门预约的朋友都知道,靠手速是不够科学的,既然咋有自动化测试,那不整个自动预约岂不是对不起自己,官网价按人民币汇率折算,省了1300块,顶小编上好几天班的工资,废话不多讲,干活,先整个视频看看效果。
selenium_iphone
上面的例子每一步都介绍了,这里大同小异,就不过多介绍。
my_config = {
'太平洋藍色':0,
'石墨色':1,
'金色':2,
'銀色':3,
'澳門銀河店':"xxx",
'澳門金沙店':"xxx",
'iPhone12_pro_url':'xxx',
'iphone12_pro_max_url':'xxx',
}
def iPhone12(iPhone_url='iPhone12_pro_url',color=None,capacity=None,quantity=None,store=None,account=None,password=None,
phoneNumber=None,registrationCode='86'):
driver = webdriver.Chrome()
driver.get(my_config[iPhone_url])
driver.implicitly_wait(3)
# selenium UI自动化测试时,可能会遇到元素可以定位到,但不可点击的情况,用driver.execute_script("arguments[0].click();", elem)
color_elem = driver.find_element_by_xpath(f'//*[@id="color-{my_config[color]}"]')
driver.execute_script("arguments[0].click();", color_elem)
capacity_elem = driver.find_element_by_xpath(f'//*[@id="capacity-{my_config[capacity]}gb"]')
driver.execute_script("arguments[0].click();", capacity_elem)
# 数量
quantity_elem = Select(driver.find_element_by_xpath('//*[@id="quantity"]'))
quantity_elem.select_by_value(f"{quantity}")
# 商店
store_elem = Select(driver.find_element_by_xpath('//*[@id="anchor-store"]'))
store_elem.select_by_value(store)
# 提交
submit_elem = driver.find_element_by_xpath('//*[@id="pricebox"]/div[3]/div/div/p/button')
# driver.execute_script("arguments[0].click();", submit_elem)
submit_elem.send_keys(Keys.RETURN)
driver.implicitly_wait(8)
# 登录跳转后要切游标,不然会找不到元素
driver.switch_to.frame(0)
# 账号
input_id = driver.find_element_by_id('account_name_text_field')
input_id.send_keys(account)
driver.find_element_by_xpath('//*[@id="sign-in"]').click()
# 密码
input_password = driver.find_element_by_xpath('//*[@id="password_text_field"]')
input_password.send_keys(password)
driver.find_element_by_xpath('//*[@id="sign-in"]').click()
driver.implicitly_wait(20)
# 切换回主页面
driver.switch_to_default_content()
# 电话号码
phone_number = driver.find_element_by_id('phoneNumber')
phone_number.send_keys(phoneNumber)
# 登记代码
password = driver.find_element_by_id('registrationCode')
password.send_keys('your registrationCode')
# 电话号码地区
phone_code = Select(driver.find_element_by_xpath('//*[@id="phoneCountryCode"]'))
phone_code.select_by_value(str(registrationCode))
# 提交
submit_elem = driver.find_element_by_xpath('//*[@id="form"]/div/div/div[3]/div[3]/div/div/button')
submit_elem.send_keys(Keys.RETURN)
input('anyKey')
driver.close()
selenium大概的样子介绍完了。
欢迎评论留言,要是觉得不错点个赞哦!
最后的最后,各位的关注、点赞、收藏、碎银子打赏是对我最大的支持,谢谢大家!
需要源码的小伙伴关注微信公众号ID:gameTesterGz
或扫描二维码关注回复selenium即可