编程语言
首页 > 编程语言> > 基于python的Selenuim自动化UI测试

基于python的Selenuim自动化UI测试

作者:互联网

目录


1.环境配置

  1. 给python安装selenuim

    • python:pip3 install selenium

    • Pycharm:pycharm->perferences->project interpreter->+号->搜索selenium->左下角install package

      selenium安装路径

  2. 安装驱动

    • 驱动下载:Goole驱动下载地址 搜狐驱动下载地址

    • 下载的驱动版本要和浏览器的版本一致,Goole浏览器在帮助->关于Goole->版本 85.0.4183.102(正式版本),下载时就需要下载85.0.4183版本对应的驱动。

    • 驱动安装路径:

      下载完驱动后接压缩,将解压缩后的Chromedriver放置在苹果电脑的Gooleusr->local->bin路径下。

      驱动安装路径

      依旧打不开时将系统偏好设置->安全性与隐私->点击锁按钮允许更改->允许app运行来允许该驱动运行。

2.编写第一个自动化脚本

from selenium import webdriver#导入selenium的webdriver包,调用webdriver API接口
import time

driver = webdriver.Chrome()#初始化Goole浏览器对象,启动浏览器
driver.get("http://www.baidu.com")#通过get()方法向浏览器发送网址

#通过元素id=kw定位到搜索框,键盘输入方法send_keys()输入关键字Selenium2
driver.find_element_by_id("kw").send_keys("Selenium2")
#通过元素id=kw定位到“百度一下”搜索按钮,并向其发送单击事件click()
driver.find_element_by_id("su").click()
time.sleep(10)
driver.quit()#退出并关闭浏览器及相关驱动

3.元素定位

1.python中元素定位的方法:

2.id、name、class定位

3.tag 定位

4.link定位

5.partil link定位

6.Xpath定位

#找到输入按钮
driver.find_element_by_xpath("/html/body/div/div/div[5]/div/div/form/span/input").send_keys("Selenium2")
#搜索按钮
driver.find_element_by_xpath("/html/body/div/div/div[5]/div/div/form/span[2]/input").click()
#输入按钮
find_element_by_xpath("//*[@id='kw']")   
#搜索按钮
find_element_by_xpath("//*[@id='su']")
#输入按钮
driver.find_element_by_xpath('//*[@id="form"]/span[1]/input').send_keys("Selenium2")
#搜索按钮
driver.find_element_by_xpath('//*[@id="form"]/span[2]/input').click()
<input type="text" id="kw" class="su" name="ie">
<input type="text" id="kw" class="aa" name="ie">
<input type="text" id="bb" class="su" name="ie">

  如上面的三行元素,假设我们现在要定位第一行元素,如果使用 id 将会与第二行元素重名,如果使用 class 将会与第三行元素重名,如果同时使用 id 和 class 就会唯一地标识这个元素,这个时候就可以通过逻辑运算符 “and” 来连接两个条件。

  当然,我们也可以用“and”连接更多的属性来唯一地标识一个元素。

#输入按钮
#//input[@]选取所有id属性的input元素
driver.find_element_by_xpath('//*[@id="kw" and @class="s_ipt"]').send_keys("Selenium2")
#搜索按钮
driver.find_element_by_xpath('//*[@id="su" and @class="bg s_btn" ]').click()

7.CSS定位

选择器 描述
.class class选择器,选择class=‘ ’的所有元素
#id Id选择器,选择id=‘ ’的所有元素
* 选择所有元素
element 元素所有的element元素
element1>element2 选择父元素为element1的所有element2元素
element1+element2 选择在同一级中紧接在element1元素之后的所有element2元素
[attribute=value] 选择attribute=value的所有元素
find_element_by_css_selector(".s_ipt")
find_element_by_css_selector(".bg s_btn")
find_element_by_css_selector("#kw")
find_element_by_css_selector("#su")

8.By定位

4.控制浏览器

1.控制浏览器窗口大小

2.控制浏览器后退、前进

3.模拟浏览器刷新

4.显示浏览器信息

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from  selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://mail.qq.com/")
#iframe有name或id
#driver.switch_to.frame('login_frame')

#iframe无name或id
elementi= driver.find_element_by_xpath('//*[@id="login_frame"]')
driver.switch_to.frame(elementi)
print("Before login==========")

# 打印当前页面title
now_title = driver.title
print(now_title)


# 打印当前页面URL
now_url = driver.current_url
print(now_url)

driver.find_element_by_xpath('//*[@id="u"]').clear()
driver.find_element_by_xpath('//*[@id="u"]').send_keys("*******")
driver.find_element_by_xpath('//*[@id="p"]').send_keys("*******")
driver.find_element_by_xpath('//*[@id="login_button"]').click()
#time.sleep(10)

print("After login==========")

# 获取登录的用户名
user = WebDriverWait(driver,20,1).until\
    (EC.presence_of_all_elements_located((By.ID,"useraddr")))

# 再次打印当前页面title
now_title = driver.title
print(now_title)

# 再次打印当前页面URL
now_url = driver.current_url
print(now_url)

# 打印登录的用户名
for i in user:
    print(i.get_attribute('textContent'))

time.sleep(3)
driver.quit(

5.简单元素操作

1.几种常见方法

2.找不到元素的可能

3.WebElement 接口常用方法

6.鼠标事件

7.键盘事件

8.定位一组元素

9.多窗口切换

from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")

# 获得百度搜索窗口句柄
sreach_windows = driver.current_window_handle

driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()

# 获得当前所有打开的窗口的句柄
all_handles = driver.window_handles

# 进入注册窗口
for handle in all_handles:
    if handle != sreach_windows:
        driver.switch_to.window(handle)
        print("now register window!")
        time.sleep(2)

# 回到搜索窗口
for handle in all_handles:
    if handle == sreach_windows:
        driver.switch_to.window(handle)
        print("now sreach window!")

        # 会跳出来一个让你下载APP的弹窗,把这个弹窗给点掉
        try:
            driver.find_element_by_id("TANGRAM__PSP_4__closeBtn")
        except:
            break
        else:
            driver.find_element_by_id("TANGRAM__PSP_4__closeBtn").click()

        # 弹窗消失后,再去查找
        driver.find_element_by_id("kw").send_keys("selenium")
        driver.find_element_by_id("su").click()
        time.sleep(2)

driver.quit()

10.警告框处理

11.文件

1.上传文件

2.下载文件

12.操作cookie

13.调用JavaScript

14.视频播放

from selenium import webdriver
import time
import os

driver=webdriver.Chrome()
driver.get("http://videojs.com/")
time.sleep(5)
video = driver.find_element_by_id('preview-player_html5_api')

# 返回播放文件地址
url = driver.execute_script("return arguments[0].currentSrc;",video)
print(url)

# 播放视频
print("start")
driver.execute_script("arguments[0].play()",video)

# 播放15秒钟
time.sleep(5)

# 暂停视频
print("stop")
driver.execute_script("arguments[0].pause()",video)
time.sleep(3)

driver.quit()

15.窗口截图

from selenium import webdriver
import time

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

driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(2)

# 截图当前窗口,并制定截图图片的保存位置
driver.get_screenshot_as_file("/Users/Jay/Downloads/baidu.png")   # png格式
driver.quit()
time.sleep(3)

driver.quit()

16.验证码的处理

标签:name,python,Selenuim,driver,element,UI,id,import,find
来源: https://www.cnblogs.com/yffxwyy/p/14015666.html