做web自动化时,常常会碰到需要定位的元素id不是固定的,无法通过id进行定位,如新增联系人时,职务id为动态属性
思考:如何定位?
因该元素id是动态的,无法通过id属性进行定位,只好换成xpath.
1.通常使用通过绝对路径定位://*[@id="contactPosition10"] ==========> 无法定位
解决方式:通过只用部分属性值匹配
//div[contains(@id,'contactType')] ============>定位成功,意思:id中包含contactType
__________________________________________________________________________________________________
补充xpath的几种强大的定位方式案例:
1.通过绝对路径定位:
By.xpath("/html/body/div[3]/div[2]/div/form/div/div[5]/div/div[3]/div/div[3]/div/div/span/input[9]")----无法定位
定位成功方式:
2.通过元素索引定位:
By.xpath("//input[9]")
3.使用xpath属性定位
By.xpath("//input[@id='kw1']")
By.xpath("//input[@type='name' and @name='kw1']")
4.使用部分属性值匹配(最强大的方法)
By.xpath("//input[start-with(@id,'file')
By.xpath("//input[ends-with(@id,'_11')
By.xpath("//input[contains(@id,'_')]")