UI自动化测试之一(元素属性、多元素处理)
作者:互联网
一、UI自动化测试
(一)、简述
基于WEB的UI的自动化测试框架 支持主流的编程语言(Python,java,c#,php,js),支持针对主流的浏览器进行UI的自动化测试(EDGE,Chrome,Firefox)。
selenium2.0=seleium1.0+webdriver
目前是selenium4.0
(二)、python下selenium的环境搭建
1、下载chrome的浏览器
2、控制台下载pip install selenium 插件
3、下载与浏览器匹配的驱动文件
(1)、查看浏览器版本 105.0.5195.102(正式版本) (64 位)
(2)、打开http://chromedriver.storage.googleapis.com/index.html网址,下载相对应的驱动文件
4、管理员身份启动driver
5、把它配置到path环境变量中(放在python目录下即可)
(三)、元素属性
1、找到元素的属性,然后才能够定位到它,下来针对它来进行各种UI交互的操作。
2、元素属性(8种)
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
优先使用ID,NAME,CLASS_NAME,当这三个都不可行的话在使用XPATH
(1)、ID
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(3)
driver.find_element(By.ID,'kw').send_keys('无涯 接口测试')
time.sleep(3)
driver.find_element(By.ID,'su').click()
time.sleep(3)
driver.close()
思路:自行打开百度首页,根据他的ID元素信息进行UI交互对‘无涯 接口测试’输入到搜索框并点击搜索,在3秒后关闭浏览器
(2)、NAME
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(3)
driver.find_element(By.NAME,'wd').send_keys('无涯 接口测试')
time.sleep(3)
driver.find_element(By.ID,'su').click()
time.sleep(3)
driver.close()
(3)、CLASS_NAME
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(3)
driver.find_element(By.CLASS_NAME,'s_ipt').send_keys('无涯 接口测试')
time.sleep(3)
driver.find_element(By.ID,'su').click()
time.sleep(3)
driver.close()
(4)、XPATH(右键选定的内容,copy,选择copy XPATH)
XPATH
Full XPATH(当时用XPATH的时候,ID是动态的,那么使用fullpath(被定位元素属性的完整路径) 右键选定的内容,点击copy 选择copy full XPATH)
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys('无涯 接口测试')
time.sleep(3)
driver.find_element(
By.XPATH,'/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input').click()
time.sleep(3)
driver.close()
(5)、css(基于样式,右键选定的内容,点击copy,选择Copy selector)
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(3)
driver.find_element(By.CSS_SELECTOR,'#kw').send_keys('无涯 接口测试')
time.sleep(3)
driver.find_element(
By.CSS_SELECTOR,'#su').click()
time.sleep(3)
driver.close()
(6)、超链接
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(3)
#精确超链接匹配
driver.find_element(By.PARTIAL_LINK_TEXT,'新闻').click()
time.sleep(3)
#模糊匹配
driver.find_element(By.PARTIAL_LINK_TEXT,'闻').click()
time.sleep(3)
time.sleep(3)
driver.close()
(7)、tagname
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('file:///C:/Users/Administrator/Desktop/tagTest.html')
time.sleep(2)
driver.find_element(By.TAG_NAME,'input').send_keys('admin')
time.sleep(3)
driver.close()
(四)、多个元素定位
有单个为什么还有多个元素?
这是因为,当开始写的ID,name,class_name一模一样的时候,这个时候无法区分,那么只能使用多个元素定位的方式
单个元素定位:find_element()
多个元素定位:find_elements()
多个元素的定位方式使用?
他获取的对象是一个列表,我们可以被定位的元素属性在列表中是第几位,根据它的 索引信息来定位它。
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('http://baidu.com')
time.sleep(2)
tags=driver.find_elements(By.TAG_NAME,'input')
tags[7].send_keys('admin')
time.sleep(3)
driver.close()
实战
需求:在网页自动输出账户和密码
源代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>
用户名:<input type="text" id="asd" placeholder="请输入用户名">
密码:<input type="password" id="asd" placeholder="请输入用户名">
</p>
</body>
</html>
操作:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('file:///C:/Users/Administrator/Desktop/tagTest(1).html')
time.sleep(2)
iads=driver.find_elements(By.TAG_NAME,'input')
iads[0].send_keys('username')
iads[1].send_keys('password')
time.sleep(4)
driver.close()
标签:webdriver,自动化,selenium,元素,driver,UI,time,sleep,import 来源: https://www.cnblogs.com/L2119/p/16690358.html