前些日子做公开课的,写了点儿selenium定位相关的内容,发出来给大家看看。只是简单地定位,并不是很复杂。
#__author__ = 'chubby_superman'
#_*_coding=utf-8 _*_
from selenium import webdriver
driver=webdriver.Firefox()
driver.get("https://baidu.com")
#8种定位方法
'html片段1: <input autocomplete="off" maxlength="255" value="" class="s_ipt" name="wd" id="kw">'
'''
标签名:input
id="kw"
class="s_ipt"
name="wd"
主要是8种定位方法的第1到4种
'''
'html片段2: <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a>'
'''
主要是8种定位方法的第5、6种
'''
'html3 详见附件1'
'''
主要是8种定位方法的第7、8种
'''
#1、id属性定位
element_id = driver.find_element_by_id("kw")
#2、 name属性定位
element_name = driver.find_element_by_name("wd")
#3、class属性定位
element_classname = driver.find_element_by_class_name("s_ipt")
#4、tag name标签名称定位
element_tagname = driver.find_element_by_tag_name("input")
#5、link text通过超链接的完整文本定位
element_linktext = driver.find_element_by_link_text("学术")
#6、partial link text通过超链接的部分文本定位
element_partial_linktext = driver.find_element_by_partial_link_text("百度")
#7、xpath 通过xpath定位
#XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
element_xpath_j = driver.find_element_by_xpath('/html/body/div[1]')
'''
xpath有两种写法,一种是绝对路径,一种是相对路径,上面使用的是绝对路径。下面我们使用相对路径定位元素
'''
element_xpath_x = driver.find_element_by_xpath('//*[@id="ftConw"]')
#//*[@id="ftConw"] //*选取文档中的所有元素,[@id="ftConw"]匹配属性为id="ftConw"的元素
#有兴趣的可以去 http://www.w3school.com.cn/xpath/xpath_functions.asp 学习相关的写法
#8、css selector
element_selector = driver.find_element_by_css_selector()
#
#css定位比xpath定位要快,通常在使用xpath定位不到的时候,我们使用css。
#html body div#home div#main div#mainContent div.forFlow div#post_detail div#topics div.post div.postBody div#cnblogs_post_body.blogpost-body table tbody tr td
#以上是完整路径,通常我们使用相对路径。
'''
注意 driver.find_element_by中 element,结尾没有s,是element的单数形式;如果,是elements,则为element的复数
形式,那么,通过driver.find_elements_by 定位的元素,返回的将是一个列表,该列表由多个元素组成
'''
elements = driver.find_elements_by_partial_link_text("百")
print(elements)
print(type(elements))
print(len(elements))
以后如果有机会,我会将浏览器操作,cookie,显式等待隐式等待脚本休眠等等加上。这里就不发了(因为我还没讲到那里)。