# 通过标签的id属性定位, 如 <div id='id'>xxxx<div/> driver.find_element_by_id('id') # 通过标签的name属性定位,如 <div name='name'>xxxx<div/> driver.find_element_by_name('name') # 通过标签的class属性定位, 如 <div class='class name'>xxxx<div/> driver.find_element_by_class_name('class_name') # 通过 <a> 标签的text定位, 如 <a>link_text<a/> driver.find_element_by_link_text('link_text') # 通过 <a> 标签的text定位,只需text的一部分, 模糊匹配 如 <a>----partial_link_text----<a/> driver.find_element_by_partial_link_text('partial_link_text') # 通过标签名定位, 如img标签, div标签 driver.find_elements_by_tag_name("img") # 通过 xpath 定位 driver.find_element_by_xpath('xpath') # 通过css选择器定位 driver.find_element_by_css_selector('css_selector')
以上共有八种定位方法
by_id, by_name, by_class_name, 是通过标签的属性进行定位的
by_link_text, by_partial_link_text 是通过 a 标签的text进行定位的
by_tag_name 是通过标签名称(如img, div)进行定位的
xpath如何定位同时满足两个筛选条件的元素, 可以使用contains谓语, 用and 或者or连接
//span[contains(text(),"《天下信用服务协议》") and contains(@class,"link")]
selenium中的ActionChains与appium中的TouchAchtion区别
selenium中的ActionChains
初始化时传入driver ActionChains中存储的所有行为 click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 context_click(on_element=None) ——点击鼠标右键 double_click(on_element=None) ——双击鼠标左键 drag_and_drop(source, target) ——拖拽到某个元素然后松开 drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开 move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标 move_to_element(to_element) ——鼠标移动到某个元素 move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置 perform() ——执行链中的所有动作 release(on_element=None) ——在某个元素位置松开鼠标左键
appium中的TouchAction
初始化时传入driver TouchAction中存储的所有行为 press(el=None,x=None,y=None,pressure=None) ——短按 long_press(el=None,x=None,y=None,duration=1000) ——长按 tap(el=None,x=None,y=None,count=1) ——点击 wait(ms=0) ——等待 move_to(el=None, x=None, y=None)——移动 perform() ——执行链中的所有动作 release() ——释放
两者的区别
相同点
1、初始化和原理两者都是一样的,初始化要传入driver,把所有动作存在一个列表中,然后依次执行
2、从功能上来说两者都有点击、移动、释放、执行功能
不同点
1、selenium中的ActionChains是模拟鼠标操作,而appium中的TouchAction是模拟人的手指在屏幕上操作
2、TouchAction有长按和短按之分,且每个动作之间都会加上wait
3、复杂成度selenium中的ActionChains比TouchAction更为复杂