day15 Ui自动化元素的定位
day15 元素的定位 Ui自动化元素的定位 1、火狐浏览器安装try xpath 2、元素定位思路: (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 webdriver driver=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()