ui自动化

UI自动化:

在selenium框架中,操作元素定位使用的类是By,里面方法有8种,

那么也就是说,定位页面的元素属性方法有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是唯一性,不可重复的

from selenium import webdriver

import time as t

'''id'''
#实例化webdrive  并且指定要测试的浏览器
driver=webdriver.Chrome()
#打开浏览器后导航到百度
driver.get('http://www.baidu.com')
#send_keys 是输入方法(通过id的属性定位到百度的搜索输入框,并且输入搜索的关键字)
driver.find_element_by_id('kw').send_keys('selenium')
t.sleep(3)
#退出浏览器
driver.quit()
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element(By.ID,'kw').send_keys('qq异常')
t.sleep(3)
driver.quit()

'''name'''
# #实例化webdrive 并且指定要测试的浏览器
driver=webdriver.Chrome()
#打开浏览器后导航到百度
driver.get('http://www.baidu.com')
#send_keys 是输入方法(通过name的属性定位到百度的搜索输入框,并且输入搜索的关键字)
driver.find_element_by_name('wd').send_keys('selenium')
t.sleep(3)
#退出浏览器
driver.quit()

'''Class_name'''
# #实例化webdrive 并且指定要测试的浏览器
driver=webdriver.Chrome()
#打开浏览器后导航到百度
driver.get('http://www.baidu.com')
#send_keys 是输入方法(通过class_name的属性定位到百度的搜索输入框,并且输入搜索的关键字)
driver.find_element_by_class_name('s_ipt').send_keys('selenium')
t.sleep(3)
#退出浏览器
driver.quit()

当一个元素使用ID,name,class_name定位不到的时候,
那么这个时候使用css(基于样式)和xpath(基于路径)
'''css'''
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_css_selector('#kw').send_keys('selenium')
t.sleep(3)
driver.quit()

'''xpath    full xpath'''
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
t.sleep(3)
driver.quit()

超链接处理
LINK_TEXT = "link text" 精准查找
PARTIAL_LINK_TEXT = "partial link text" 超链接模糊查找
LINK_TEXT = "link text" #精准查找
PARTIAL_LINK_TEXT = "partial link text"# 超链接模糊查找
#实例化webdrive,并且指定测试的浏览器
driver=webdriver.Chrome()
#打开浏览器导航到百度
driver.get('http://www.baidu.com')
send keys是输入的方法(通过超链接的属性定位到百度的搜索输入框,并且输入搜索的关键字
driver.find_element_by_link_text('视频').click()
driver.find_element_by_partial_link_text('频').click()
t.sleep(3)
#退出浏览器
driver.quit()

元素定位从分类上而言:
1、单个元素定位
2、多个元素定位(元素属性都一致)
A、获取到的元素属性,它是一个列表
B、按照我们需要被定位的元素属性,它在列表中是第几位,那么
就使用它的索引来定位

 

 driver=webdriver.Chrome()

driver.get('file:///D:/code/testDev/ul%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index(2).html')
listID=driver.find_elements_by_id('login')
print(type(listID))
for item in listID:
print(item)
输入账户
listID[0].send_keys('liu lele')
t.sleep(3)
输入密码
listID[1].send_keys('123')
t.sleep(3)
点击登陆按钮
listID[2].click()
t.sleep(2)
driver.quit()

'''tag_name'''
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
inputs=driver.find_elements_by_tag_name('input')
inputs[7].send_keys('selenium')
t.sleep(3)
driver.quit()
'''实战     12306订票'''
web=webdriver.Chrome()
url='https://www.12306.cn/index/'
web.get(url)
web.find_element_by_xpath('//*[@id="fromStationText"]').click()
web.find_element_by_xpath('//*[@id="ul_list1"]/li[29]').click()
web.find_element_by_xpath('//*[@id="toStationText"]').click()
web.find_element_by_xpath('//*[@id="ul_list1"]/li[1]').click()
t.sleep(3)
web.find_element_by_css_selector('#search_one').click()

t.sleep(4)
进入iframe框架三种方式
1 id
2 name
3 索引driver=webdriver.Chrome()
driver.get('http://mail.qq.com')
driver.switch_to.frame(1)
t.sleep(3)
driver.find_element(By.NAME,'u').send_keys('792144759')
t.sleep(3)
driver.quit()

常用的方法
'''获取测试地址'''
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
print(driver.current_url)
print(driver.page_source)
print(driver.title)
driver.quit()

 

 

'''后退前进'''
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
t.sleep(3)
driver.get('https://cn.bing.com/')
t.sleep(3)
driver.back() 后退
print(driver.current_url)
t.sleep(3)
driver.forward() 前进
print(driver.current_url)
driver.quit()
多窗口的处理的逻辑
1、先获取当前窗口的句柄
2、点击后打开新的窗口
3、获取所有的窗口句柄
4、针对所有的窗口句柄循环,循环内部判断,如果不是当前的窗口,那么就是新的
窗口,那么就需要切换到新的窗口
driver=webdriver.Chrome()
driver.get('https://mail.sina.com.cn/')
nowHandler=driver.current_window_handle
t.sleep(3)
driver.find_element(By.LINK_TEXT,'注册').click()
t.sleep(3)
allHandlers=driver.window_handles
for handler in allHandlers:
if handler!=nowHandler:
#切换到新的窗口
driver.switch_to.window(handler)
driver.find_element(By.NAME,'email').send_keys('792144759')
t.sleep(3)
driver.close()
t.sleep(3)
driver.switch_to.window(nowHandler)
driver.find_element(By.ID,'freename').send_keys('792144759')
t.sleep(3)
driver.quit()
 
 
 
 
 
 
 
 
 
 
 




 
 



posted @ 2022-06-27 19:33  刘乐乐liu  阅读(117)  评论(0)    收藏  举报