'''高级定位-css'''
'''css 选择器概念'''
#css 选择器有自己的语法规则和表达式
#css 定位通常分为绝对定位(右键-copy selector)和相对定位
#和Xpath一起常用于UI自动化测试中的元素定位
'''css 定位场景'''
#支持web产品
#支持app端的webview
'''css 相对定位的优点'''
#可维护性更强
#语法更加简洁
# 绝对定位
#$("#ember63 > td.main-link.clearfix.topic-list-data > span > span > a")
# 相对定位
#$("#ember63 [title='新话题']")
#解决各种复杂的定位场景
'''css 定位的调试方法'''
#进入浏览器的console
#输入:
#$("css表达式")
#或者$$("css表达式")
#如果表达式中含有字符串,要和外边的字符串单双引号区分开 外单内双 或者外双内单
'''css基础语法'''
'''类型 表达式 在console中的写法'''
#标签 标签名 $('input')
#类 .class属性值 $('.s_ipt') .代表类属性
#ID #id属性值 $('#kw') #代表id属性
#属性 [属性名='属性值'] $('[name="wd"]')
#如果class后边的属性值为多个单词时,中间要加"." 连接
'''css关系定位'''
'''类型 格式 在console中的写法'''
#并集 元素,元素 $('.bg,.s_ipt_wr,.new-pmd,.quickdelete-wrap')
#邻近兄弟(了解即可) 元素+元素 $('.soutu-btn+input')
#兄弟(了解即可) 元素1~元素2 $('.soutu-btn~i')
#父子(重点) 元素>元素 $('#s_kw_wrap>input')
#后代(重点) 元素 元素 $('#form input')
'''css 顺序关系'''
'''类型 格式 在console中的写法'''
#父子关系+顺序 元素 元素 $('#form>input:nth-child(2)') (同一个爸爸)
#父子关系+标签类型+顺序 元素 元素 $('#form>input:nth-of-type(1)') (不同的爸爸)
'''高级定位-xpath'''
'''xpath基本概念'''
#XPath 是一门在 XML 文档中查找信息的语言
#XPath 使用路径表达式在 XML 文档中进行导航
#XPath 的应用非常广泛
#XPath 可以应用在UI自动化测试
'''xpath 定位场景'''
#web自动化测试
#app自动化测试
'''xpath 相对定位的优点'''
#可维护性更强
#语法更加简洁
#相比于css可以支持更多的方式
'''xpath 定位的调试方法'''
#浏览器-console
#$x("xpath表达式")
#浏览器-elements
#ctrl+f 输入xpath或者css
'''xpath 基础语法(包含关系)'''
'''一般都使用 //* '''
#表达式 结果
#/ 从该节点的子元素选取 $x("/")
#// 从该节点的子孙元素选取 $x("//*")
#* 通配符 $x("//*")
#nodename 选取此节点的所有子节点(标签) $x("//div")
#.. 选取当前节点的父节点 $x('//*[@id="site-logo"]/..')
#@ 选取属性 $x('//*[@id="site-logo"]')
'''xpath 顺序关系(索引)'''
#xpath通过索引直接获取对应元素
# 获取此节点下的所有的li元素
#$x("//*[@id='ember21']//li")
# 获取此节点下【所有的节点的】第一个li元素
#$x("//*[@id='ember21']//li[1]")
'''xpath 高级用法'''
#[last()]: 选取最后一个
#//input[last()]
#[@属性名='属性值' and @属性名='属性值']: 与关系
#//input[@name='passward' and @pwd='123456']
#[@属性名='属性值' or @属性名='属性值']: 或关系
#//input[@name='passward' or @pwd='123456']
#[text()='文本信息']: 根据文本信息定位
#//*[text()='霍格沃兹测试开发']
#[contains(text(),'文本信息')]: 根据文本信息包含定位
#//*[contains(text(),'霍格沃兹')]
#注意:所有的表达式需要和[]结合