其他分享
首页 > 其他分享> > UI自动化测试之一(元素属性、多元素处理)

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