元素定位: 1、手工f12在被测页面中定位到要操作的元素 2、分析定位的该代码: 2.1看标签、属性 2.2找到唯一(整个页面的代码做比较)识别的内容 3、用python写代码调用webdriver的元素定位的API find_element(By.定位方式,’唯一属性值’),由第2步确定定位的方式 例如: bs.find_element(By.LINK_TEXT,'新梦想论坛') 4、根据想对以上定位的代码要实现的功能来确定调用webdriver操作的API 例如: bs.find_element(By.LINK_TEXT,'新梦想论坛').click() 元素定位方法: find_element(By.定位方法) LINK_TEXT :按照a标签的文字内容 ID :按任意标签的ID属性值(唯一识别最好)HTML表单里面的单选按钮radio NAME :按NAME属性值(唯一识别较好) TAG_NAME:按标签的名字 CLASS_NAME:按CLASS属性值中的空格 注意:HTML代码中CLASS属性值中的空格 LINK_NAME:按照a标签的文字内容 PARTIAL_LINK_NAME:按照a标签的部分文字内容 XPATH:综合定位方法 有其他唯一定位方式情况下,不建议使用路径定位 1、按路径(带索引) 绝对路径定位: /html/body/div/div/div/div/div/form/span/input 相对路径: //span/input xpath的索引位置是从1开始表达第1位 //div[3]/a[2] 2、按属性值(有效的扩充了现有的元素定位方式) //标签名[@属性名=”属性值” //input[@id=”kw” from input where id=”kw” //标签名[@属性名1=”属性值” and/or @属性名2=”属性值” 备注:以上的标签名和属性名可以用通配符*替代 1、使用xpath自带的函数扩充定位 starts-with() #以xx为开头 substring() #字符串截取(从第几位截取几位) contains() #包含xx内容 text() #文本值 bs.find_element(By.XPATH,'//span[starts-with(text(),"婴幼儿无人照料")]').click() substring(‘字符串’,start,len)#从1开始 substring(‘abcdefg’,2,3) substring(‘abcdefg’,2)
|