元素定位: 元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,举例:一个对象就是一个人,我们可以通过身份证号、姓名或者他的住址找到这个人。那么一个web对象也是一样的,我们可以通过唯一区别于其它元素的属性来定位这个元素。 自动化的代码对html进行元素识别: Selenium提供丰富元素识别方式 1. 通过id定位元素 driver.find_element_by_id("id_vaule") 2. 通过name定位元素: driver.find_element_by_name("name_vaule") 3. 通过class_name定位元素:driver.find_element_by_class_name("class_name") 4. 通过tag_name定位元素:driver.find_element_by_tag_name("tag_name_vaule") 5. 通过link定位:driver.find_element_by_link_text("text_vaule")或:driver.find_element_by_partial_link_text("text_vaule")模糊查询 text_vaule---超级链接标签的文本内容 1. 通过xpath定位元素: driver.find_element_by_xpath("xpath_syntax") 实现按路径定位查找 使用场景:1)没有id/name,或id/name/class_name/link_test/存在重复 路径:绝对路径 从/html/..开始 相对路径 相对于参照物路径而言的路径描述 // 2)没有某种特定属性定位方式 3)定位较复杂,多条件定位 用逻辑运算符and、or衔接多个条件 //input[@type=’’and @value=’’] 2. 通过css定位元素: driver.find_element_by_css_selector(“css_syntax”) 按绝对路径查找:html body div#wrapperdiv#head div.head_wrapper 当同一层次有多个相同的元素时,使用id或class区分,遇到id用#号,遇到class用.号 元素属性定位要求属性能够定位到唯一一个元素,如果存在多个相同条件的标签,默认定位第一个,具体格式//标签名[属性="属性值"]支持使用多个属性一起定位元素。 使用部分属性值匹配(也称为模糊方法定位)属性值如果太长或网页中的元素属性动态变化,可以使用此方法元素属性值头包含内容^=driver.find_element_by_xpath("a[name^='tj_trhao']") 元素属性值尾包含内容$=driver.find_element_by_xpath("a[name$='123']") 元素属性值包含内容:*=driver.find_element_by_xpath("a[name*='hao']" 查询兄弟元素 1)同层级下一个元素+driver.find_element(By.CSS_SELECTOR,'div#u1a+a') 2)选择同层级多个相同标签的元素driver.find_elements(By.CSS_SELECTOR,‘div#u1a~a’) 备注:+号可以多次使用 ~号一般返回的是多个元素,要用find_elements接收 定位元素代码形式:from selenium.webdriver.common.byimport By
|