元素定位
元素定位
(chrome driver 下载地址:https://npm.taobao.org/mirrors/chromedriver/)
八大元素定位:
name, classname, tagname, id,xpath,css,linktext, partialLinkText。
元素定位
# 1: id
driver.find_element_by_id('具体的id值')
# 2: name
driver.find_element_by_name('name属性对应的具体值')
# 3:classname
driver.find_element_by_class_name('具体的class属性值,可能是部分,有些class是复合的,多个,中间有空格, 或者空格用点连接')
# 4:tagname
driver.find_element_by_tag_name('具体的tag属性值')
# 5: linktext(标签的文本值)
driver.find_element_by_link_text('新闻').click()
# 6:partialLinkText(标签文本的部分值,比如百度首页的“新闻”连接,这里只用“新”字)
driver.find_element_by_partial_link_text('新').click()
# 7:xpath(/表示从根路径,//表示从任意位置开始,语法规则:标签名[@属性名="属性值"])
driver.find_element_by_xpath("//input[@class='s_ipt']").send_keys('上海天气')
# 7.1: xpath: 匹配儿子元素,也可以使用下标,语法是从1开始
driver.find_element_by_xpath("//input[@class='s_ipt']/儿子元素标签名[1]")
# 7.2: xpath: 匹配相邻元素,前面的元素:preceding-sibling::标签名。 下面这行其实匹配到的是第三个div标签
driver.find_element_by_xpath("//div[@id='head']/div[4]/preceding-sibling::div[1]")
# 7.3: xpath: 匹配相邻元素,后面的元素:following-sibling::div[1]。下面这行代码其实匹配到的是div后面的script标签
driver.find_element_by_xpath("//div[@id='head']/div[4]/following-sibling::script")
# 8: CSS元素定位(语法:标签名, ID选择器:#id值, class选择器:.class属性值,其他属性选择器:[属性名='属性值'])
# 8.1: 标签名
#driver.find_element_by_css_selector("input")
# 8.2:ID选择器
#driver.find_element_by_css_selector("#标签对应的具体ID值").send_keys('上海天气')
# 8.3:class选择器
#driver.find_element_by_css_selector('.class属性值')
# 8.3:其他属性值
#driver.find_element_by_css_selector('[标签的某个属性=“该属性对应的值”]')
# 8.4:查找子(儿子或者孙子元素)元素, 语法:使用空格。下面该行代码定位的是标签A,他是空格前定位到的元素的子(儿子元素或者孙子元素)元素
driver.find_element_by_css_selector("[元素的属性名=该属性的值] 标签名A")
# 8.5:定位直接子元素:>. 下面该行代码定位的是标签A,他是空格前定位到的元素的儿子元素
driver.find_element_by_css_selector('[name=f]>inputA' )
# 8.6:相邻相抵元素,后面的元素,用+. 下面代码定位到的div元素是+号前面元素的弟弟元素。
driver.find_element_by_css_selector("[name=f]+div")
# 8.7:后续胸弟选择器:用~. 下面代码定位到的inputA元素是~号前面元素的所有弟弟元素,可能有多个。
driver.find_element_by_css_selector("[name='rn']~inputA")