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()
原文地址:https://www.cnblogs.com/zzzao/p/11108374.html