ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UI自动化测试之一(元素属性、多元素处理)

2022-09-13 19:01:41  阅读:363  来源: 互联网

标签:webdriver 自动化 selenium 元素 driver UI time sleep import


一、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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有