day15 元素的定位Ui自动化元素的定位1、火狐浏览器安装try xpath2、元素定位思路:(1)查看页面元素,确认能够唯一定位到元素的属性,比如id,文案3、学习xpath cssSelector 手写定位方式xpath(xpath 定位尽量已属性定位为主,层级为辅)//* 获取当前页面的全部//*[@id='i1'] 可以通过id属性进行定位,@代表引用属性//select[4]如果不存在唯一取值,可以使用角标取值//div[@class='driver'][1]/div[@class='inner'][1]/input 相对路径层级定位//select[@size='4'and @multiple='multiple'] 多属性确立唯一 cssSelector 多使用这种方法# 代表id#i1.inner代表class[placeholder="请通过ID定位元素"] 通过属性定位input[placeholder="请通过ID定位元素"]select[size='4'][multiple="multiple"] 多属性确立唯一问题一:什么时候用css selector 什么时候用xpath由于css selector 没有角标定位方式,如果定位的元素无法根据属性确立唯一只能通过xpath进行角标定位
4、18种定位方式
from selenium import webdriverdriver=webdriver.Chrome();driver.get("http://ui.imdsx.cn/uitester/")#滚动条到最上面
js="window.scrollTo(0,0)"
driver.execute_script(js)"""
8种单数定位方式
"""#id进行定位
#
# driver.find_element_by_id("i1").send_keys("11")
#
# #name定位方式
#
# driver.find_element_by_name("name").send_keys("22")
#
# #文案定位a中的文案
#
# driver.find_element_by_link_text("新建标签页面").click()
#
# #1、标签名定位,如果有很多个相同的标签,获取第一个标签
# #2、最不常用
#
# driver.find_element_by_tag_name('input').send_keys('1111')#使用xpath
# driver.find_element_by_xpath('//*[@id="i1"]').send_keys("333")#通过css定位
# driver.find_element_by_css_selector("#i1").send_keys("555")
#
# driver.find_element_by_css_selector('input[name="name"]').send_keys("666")"""
8种复数定位方式,在8种单数的基础是加复数形式,所有的复数返回的都是列表
"""
# driver.find_elements_by_id()"""
最后两种
"""
driver.find_elements_by_id()#可以按照下面的写法进行定位
driver.find_element('id','i1')
driver.find_elements()
5、浏览器相关操作
from selenium import webdriver"""
使用selenium对浏览器的操作
"""driver=webdriver.Chrome()
driver.get("http://ui.imdsx.cn/uitester/")
js="window.scrollTo(0,0)"
driver.execute_script(js)#获取浏览器大小
# size=driver.get_window_size()
# print(size)
#
# #设置浏览器的大小
#
# driver.set_window_size(200,200)
#最大化
# driver.maximize_window()
# #截图
# driver.get_screenshot_as_file('aa.png')#执行js
# driver.execute_script('js')#switch切换浏览器窗口
# driver.find_element_by_link_text("新建标签页面").click()
#
# #获取当前浏览器所打开全部tag标识
# print(driver.window_handles)
# #获取当前浏览当前tag的表示
# print(driver.current_window_handle)
#
# handle=driver.window_handles[-1]
# #切换到最新的页面,这个方法过期,已经不t推荐使用了
# driver.switch_to_window(handle)
# #最新使用这个方法
# driver.switch_to.window(handle)
#
# driver.close()#勾选checkbox
on=driver.find_element_by_css_selector("#on")off=driver.find_element_by_css_selector("#off")#判断是否已经勾选,已勾选返回true,未勾选返回false
print(on.is_selected())
print(off.is_selected())#关闭当前页面,当一个浏览器出现多个页面
# driver.close()
#退出驱动# driver.quit()
6、iframe相关操作
from selenium import webdriver""" iframe的操作 """driver=webdriver.Chrome() driver.get("http://ui.imdsx.cn/uitester/") js="window.scrollTo(0,0)" driver.execute_script(js)#切换iframe driver.switch_to.frame("top-frame")driver.find_element_by_css_selector("#newtag").send_keys("1111")driver.switch_to.frame("baidu-frame") driver.find_element_by_css_selector("#kw").send_keys("222") #返回上一层 driver.switch_to.parent_frame() driver.find_element_by_css_selector("#newtag").click()#直接返回默认层 driver.switch_to.default_content()
7、页面弹框相关操作
from selenium import webdriver import time""" 弹框的操作 """driver=webdriver.Chrome() driver.get("http://ui.imdsx.cn/uitester/") js="window.scrollTo(0,0)" driver.execute_script(js)#点击出现弹框 # driver.find_element_by_css_selector("#alert").click() # # time.sleep(2) # #点击确认 # driver.switch_to.alert.accept()#取消按钮 driver.find_element_by_css_selector("#confirm").click() time.sleep(2) driver.switch_to.alert.dismiss()
8、select相关操作
from selenium import webdriver import time""" select相关操作 """driver=webdriver.Chrome() driver.get("http://ui.imdsx.cn/html/") js="window.scrollTo(0,1800)" driver.execute_script(js)sele=driver.find_element_by_xpath('//select[1]')from selenium.webdriver.support.select import Select#select模块只支持select元素 #value=4的元素 Select(sele).select_by_value("4") #角标为第3个的元素 Select(sele).select_by_index(3)
9、鼠标悬浮的相关操作
1 element=driver.find_element_by_css_selector("#dis1") 2 3 #判断元素是否可见,可见返回true,不可见返回false 4 5 print(element.is_displayed()) 6 7 from selenium.webdriver.common.action_chains import ActionChains 8 #1、先定位到鼠标要悬浮的元素 9 a=driver.find_element_by_css_selector("#a") 10 dis1=driver.find_element_by_css_selector('#dis1') 11 #2、将鼠标移动到元素上,再进行点击 12 ActionChains(driver).move_to_element(a).click(dis1).perform()
10、鼠标的拖拽操作
1 from selenium import webdriver 2 import time 3 4 """ 5 鼠标拖拽相关操作 6 """ 7 8 driver=webdriver.Chrome() 9 driver.get("http://ui.imdsx.cn/move/") 10 11 s1=driver.find_element_by_css_selector('#dragger1') 12 13 t1=driver.find_element_by_css_selector('#i1') 14 15 from selenium.webdriver.common.action_chains import ActionChains 16 17 #从s1拖拽到t1 18 ActionChains(driver).drag_and_drop(s1,t1).perform()