1.python ui自动化:
报告模板:https://github.com/GoverSky/HTMLTestRunner_cn
http://wiki.hqygou.com:8090/pages/viewpage.action?pageId=97781973
1、便利性
2、可复用性
3、收益
4、简单化
smtp_server.login('[email protected]', 'qffmtutgoxbtbfff')
邮件html格式:https://github.com/GoverSky/HTMLTestRunner_cn
2.拖动到可见的元素去
target = self.driver.find_element_by_xpath("//*[@class='paychannel checked']/dd/div/div[6]/div/input")
self.driver.execute_script("arguments[0].scrollIntoView();", target) # 拖动到可见的元素去
3.浏览器下拉
self.driver.execute_script("var q=document.documentElement.scrollTop=500") IE和火狐浏览器
driver.execute_script("var q=document.body.scrollTop=5000") 谷歌浏览器
self.driver.execute_script("document.documentElement.scrollTop = 100000") 最低
1、尝试下拉一段滚动条,让按钮能看到
js = "window.scrollTo(100,450)"
driver.execute_script(js)
2、不是下拉加载的页面,用方法一有点傻,尝试让滚动条定位到指定元素位置
the_loginBtn = driver.find_element_by_css_selector("div.loginForm>input#loginBtn")
ActionChains(driver).move_to_element(the_loginBtn).perform()
4.浏览器 console
document.getElementById('loginBtn')
5.text定位元素
self.driver.find_element_by_xpath("//span[contains(text(),'My Wallet')]").click()
6.弹窗处理
driver.switch_to.alert
driver.switch_to.alert.accept() # 点击弹出上面的确认按钮
.accept() 确认
.dismiss() 取消(我碰到的没有取消这个,没错只能同意)
.send_keys() 输入内容(如果有的话)
6.等待元素出现
#等待百度登录弹出框中 要出现的元素可见
ele_id = "TANGRAM__PSP_10__footerULoginBtn"
param = (By.ID,ele_id)
#元素可见时,再进行后续操作
WebDriverWait(driver,10).until(EC.visibility_of_element_located(param))
7.切换窗口。
js='window.open("https://www.baidu.com");' #通过执行js,开启一个新的窗口
driver.execute_script(js)
切到第一个窗口:
windows = self.driver.window_handles
self.driver.switch_to.window(windows)
切到新的窗口:
# 获得打开的第一个窗口句柄
window_1 = driver.current_window_handle
# 获得打开的所有的窗口句柄
windows = driver.window_handles
# 切换到最新的窗口
for current_window in windows:
if current_window != window_1:
driver.switch_to.window(current_window)
8.页面有多个同元素
self.driver.find_elements_by_xpath('//*[@id="dialogMain"]/div/a')[2].click()
elements非element,且【】。从0123开始
9.截取取正则表达式
import re
a =https://ceshi.zaful.net/?token=O190329013624114605EWF&lang=en
a = re.findall(r'https://.*en/', a)
#或者
index = a.find("https")
print(index)
payurl = a[index:index + 61]
print(payurl)
10.切片
txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#")
print(x)
['Google', 'Runoob', 'Taobao', 'Facebook']
11.random
print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20
# 随机选取0到100间的偶数:print random.randrange(0, 101, 2)
# 随机浮点数:print random.random()print random.uniform(1, 10)
# 随机字符:print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')
# 多个字符中生成指定数量的随机字符:print random.sample('zyxwvutsrqponmlkjihgfedcba',5)
# 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))print ran_str
# 多个字符中选取指定数量的字符组成新字符串:print ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5))
# 随机选取字符串:print random.choice(['剪刀', '石头', '布'])
# 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]print random.shuffle(items)
12.方法中调用多个方法
def FLname_PSE():
print("FLname_PSE")
def FLname_TRCC():
print("FLname_TRCC")
strs = ['FLname_PSE', 'FLname_TRCC']
for s in strs:
globals().get(s)()
13.元素拖拽
from selenium.webdriver.common.action_chains import ActionChains
# 起点
start = driver.find_element_by_xpath("//*[contains(text(),'worldpay')]")
# 终点
end = driver.find_element_by_xpath("//*[contains(text(),'worldpay')]/../li[1]")
actions = ActionChains(driver)
actions.drag_and_drop(start, end)
# 执行
actions.perform()
sleep(0.5)
https://www.cnblogs.com/yoyoketang/p/8711367.html
M端:
键盘操作:
http://www.cnblogs.com/mengyu/p/6942584.html
from selenium.webdriver.common.keys import Keys #引入Keys类包
input = driver.find_element_by_id('kw') #定位搜索框
input.send_keys(Keys.CONTROL, 'a') #control + a 全选
from selenium.webdriver.common.action_chainsimport ActionChains # 引入 ActionChains 类
# # 开始位置:定位到元素的原位置
# source = self.driver.find_element_by_xpath("//*[@class='ck_insuranceTxt']")
# # 结束位置:定位到元素要移动到的目标位置
# target = self.driver.find_element_by_xpath("//*[@class='headNav_hdTxt']")
# # 执行元素的拖放操作
# ActionChains(self.driver).drag_and_drop(source, target).perform()
from selenium.webdriver.common.keysimport Keys
# self.driver.find_element_by_xpath("//*[@class='headNav_hdTxt']").send_keys(Keys.SPACE) # 注意这里组合键的输入。
djiango:
http://www.runoob.com/django/django-first-app.html