selenium自动化测试中,提供了单个元素定位方法,多个元素定位方法,2种方式都是根据元素属性:ID、NAME、CLASS_NAME、TAG_NAME、CSS_SELECTOR、XPATH、LINK_TEXT、PARTIAL_LINK_TXEXT来进行定位,本文以实例作为说明
以chrom打开百度首页为例子,右键选择-检查,打开开发者工具,点击选中搜索栏,可以定位到以下代码,以该搜索栏定位来分析单元素定位方法。
1.find_element_by_id:
通过元素属性ID来定位到元素,方法是find_element_by_id,以上述输入框为例,它的ID属性是kw,代码如下:
browser.find_element_by_id("kw").send_keys("selenium")
2.find_element_by_name: 通过元素属性NAME来定位到元素,方法是find_element_by_NAME,以上述输入框为例,它的NAME属性是wd,代码如下: browser.find_element_by_name("wd").send_keys("selenium")
3.find_element_by_class_name: 通过元素属性class_name来定位到元素,方法find_element_by_class_name,以上述输入框为例,它的class_name属性是s_ipt,代码如下: browser.find_element_by_class_name("s_ipt").send_keys("selenium") 4.find_element_by_xpath: 通过XPATH定位输入框,方法是find_element_by_xpath,获取的方式是定位到输入框的元素属性后,可以右键点击该属性,选中copy xpath选项,代码如下: browser.find_element_by_xpath('//*[@id="kw"]').send_keys("selenium") 5.find_element_by_link_text: link_text用于对超链接的处理,在HTML代码中主要是以标签a对应,方法是find_element_by_link_text,以点击百度首页的“新闻”链接为例子,代码是<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>,那么可以使用以下方法定位: browser.find_element_by_link_text("新闻").click(). 6.find_element_by_partial_link_text: partial_link_text也用于超链接的处理,它和link_text类似,只不过是用于模糊匹配,例如匹配“新闻”,操作的时候只填写“闻”就可以定位到,方法:find_element_by_partial_link_text,代码: browser.find_element_by_partial_link_text("闻").click() 7.find_element_by_css_selector: 当使用ID、NAME属性无法定位到元素时,可以使用CSS_SELECTOR来定位,方法是find_element_by_css_Selector,还是以百度输入框为例,右键单击copy,选中copy selector,代码如下: browser.find_element_by_css_selector("#kw").send_keys("selenium") 以上方法是总结单个元素定位的7种方法,个人比较喜欢使用XPATH进行定位,XPATH语法可以参考https://zhuanlan.zhihu.com/p/29436838。