美文网首页我爱编程
SELENIUM 2 自动化测试实战

SELENIUM 2 自动化测试实战

作者: 两分与桥 | 来源:发表于2018-04-02 09:04 被阅读35次

虫师写的基于 python 语言的这本 selenium 还是很不错的

  1. 控制浏览器大小
#-*- coding:utf-8 -*-
from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path=(r'C:\Users\libai\AppData\Local\Google\Chrome\Application\chromedriver.exe'))
#下载的 chromdriver.exe  的路径
driver.get("http://www.zhbit.com/")

x = 480
y = 800
print("设置浏览器宽%d,高%d显示" %(x, y))
driver.set_window_size(x,y)
time.sleep(8)

print("设置全屏显示")
driver.maximize_window()
time.sleep(8)

driver.find_element_by_id("keyboard").send_keys("Selenium2")
driver.find_element_by_name("Submit22").click()
time.sleep(5)
driver.quit()
  1. 控制浏览器的前进后退
#-*- coding:utf-8 -*-
from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path=(r'C:\Users\libai\AppData\Local\Google\Chrome\Application\chromedriver.exe'))

print("设置全屏显示")
driver.maximize_window()


driver.get("http://www.zhbit.com/")
time.sleep(8)

print("跳转")
driver.get("http://www.zhbit.com/jgsz/wzdh.html")
time.sleep(8)

print("back")
driver.back()
time.sleep(8)

print("forward")
driver.forward()
time.sleep(8)

driver.quit()

  1. 刷新当前页面,相当于 F5
driver.refresh()
  1. clear() 清除文本
    send_keys(*value) 模拟按键输入
    click() 单击元素
    submit() 用于提交表单,例如在搜索框输入关键字之后的“回车”操作
#-*- coding:utf-8 -*-
from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path=(r'C:\Users\libai\AppData\Local\Google\Chrome\Application\chromedriver.exe'))

print("设置全屏显示")
driver.maximize_window()


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

driver.find_element_by_id("keyboard").send_keys("Selenium2")
driver.find_element_by_id("keyboard").submit()
#与点击提交效果相同,
#driver.find_element_by_name("Submit22").click()
time.sleep(5)
driver.quit()
  1. size 返回元素的尺寸
    text 获取元素的文本
    get_attribute(name) 获取属性值
    is_displayed() 该元素对用户是否可见

  2. 鼠标事件,由 ActionChains 类提供鼠标操作
    perform() 执行所有 ActionChains 中存储的行为
    context_click() 右击
    double_click() 双击
    drag_and_drop() 拖动
    move_to_element() 鼠标悬停

#-*- coding:utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
print("设置全屏显示")
driver.maximize_window()


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

above = driver.find_element_by_css_selector("#u1 > a.pf")
ActionChains(driver).move_to_element(above).perform()
time.sleep(5)

driver.quit()
  1. 键盘事件 send_Keys()
#-*- coding:utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
print("设置全屏显示")
driver.maximize_window()


driver.get("http://e.zhbit.com/jsxsd/")

print("before login=====================")
print(driver.title)
print(driver.current_url)
time.sleep(8)

print("logining")
driver.find_element_by_id("userAccount").clear()
driver.find_element_by_id("userAccount").send_keys("admin")
driver.find_element_by_id("userPassword").clear()
driver.find_element_by_id("userPassword").send_keys("password")
driver.find_element_by_id("btnSubmit").click()
time.sleep(5)

print("login end")
print(driver.title)
print(driver.current_url)
print(driver.find_element_by_id("Top1_divLoginName").text)
time.sleep(5)

print("out of login")
driver.find_element_by_css_selector("#Top1_LExit > a").click
time.sleep(5)
driver.quit()
  1. 显式等待
element = WebDriverWait(driver, 5 , 0.5).until(EC.presence_of_element_located((By.ID, "kw")))
#等待,每0.5秒检测一次,超时5s,,until  用presence_of_element_located 检测元素是否存在
element.send_keys("selenium")

隐式等待

#implicitly_wait() 默认单位为秒,它并不针对页面上的某一元素进行等待
#当脚本执行到某个元素定位时,如果元素可以定位,则继续执行,
#如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到
#假设在第6秒定位到了元素则继续执行,超时则抛出异常
driver.implicitly_wait(10)
driver.get("http://e.zhbit.com/jsxsd/")

  1. 定位一组元素
    用 for 循环取出一组元素
    pop(0) 获得一组元素中的第一个
    pop(1) 获得一组元素中的第二个
    pop() 默认获得最后一个

  2. 切换到嵌套页面

switch_to.frame()  #切换到嵌套页面
#切换到iframe(id = "if")
driver.switch_to.frame("if")
driver.switch_to.default_content()
#跳出当前表单

11.多窗口切换 switch_to_window()

  1. 警告框处理

  2. 上传处理

  3. 下载文件

  4. 操作cookie

  5. 调用JavaScript
    控制滚动条
    向页面中的 textarea 文本框输入内容

  6. 处理 HTML5 的视频播放

  7. 窗口截图

  8. 关闭其中某个窗口,close()

  9. python 多线程
    thread 不支持守护线程,当主线程退出时,所有的子线程不管他们是否还在工作,都会被强行退出
    有时候我们并不希望发生这种行为,就引入了守护线程
    threading 支持守护线程

import time
import threading

def music(x, y):
    print("music begin")
    time.sleep(5)
    print("music end %d" %(x+y))
def movie(x, y):
    print("movie begin")
    time.sleep(10)
    print("movie end %d" %(x*y))

#创建线程数组
threads = []

#创建线程t1,并添加到线程数组
t1 = threading.Thread(target=music, args=(4,5))
threads.append(t1)

#创建线程t2,并添加到线程数组
t2 = threading.Thread(target=movie, args=(4,5))
threads.append(t2)

if __name__ == "__main__":
    #启动线程
    print(time.ctime())
    for t in threads:
        t.start()
    #守护线程
    for t in threads:
        t.join()
    print(time.ctime())
    print('all end:')

21.多进程 multiprocessing

import time
import multiprocessing

def music(x, y):
    print("music begin")
    time.sleep(5)
    print("music end %d" %(x+y))
def movie(x, y):
    print("movie begin")
    time.sleep(10)
    print("movie end %d" %(x*y))

#创建线程数组
threads = []

#创建进程
t1 = multiprocessing.Process(target=music, args=(4,5))
threads.append(t1)

#创建进程
t2 = multiprocessing.Process(target=movie, args=(4,5))
threads.append(t2)

if __name__ == "__main__":
    #启动线程
    print(time.ctime())
    for t in threads:
        t.start()
    #守护线程
    for t in threads:
        t.join()
    print(time.ctime())
    print('all end:')

22.Pipe, Queue进程间通信
Pipe是双向的

import multiprocessing

def proc1(pipe):
    pipe.send('hello')
    print('proc1 rec:', pipe.recv())
def proc2(pipe):
    print('proc2 rec:', pipe.recv())
    pipe.send('hello, too')
if __name__ == '__main__':
    multiprocessing.freeze_support()
    pipe = multiprocessing.Pipe()

    p1 = multiprocessing.Process(target=proc1, args=[pipe[0],])
    p2 = multiprocessing.Process(target=proc2, args=[pipe[1],])
    p1.start()
    p2.start()
    p1.join()
    p2.join()

看到最后,发现这本书实际上并不是讲 selenium webdriver 的,其实讲的是测试方面,很多看不是很明白------------,好了,这本书就到这里过吧
看别的去了

相关文章

网友评论

    本文标题:SELENIUM 2 自动化测试实战

    本文链接:https://www.haomeiwen.com/subject/lclthftx.html