selenium定位方法
Selenium提供了8种定位方式。
- id
- name
- class name
- tag name
- link text
- partial link text
- xpath
- css selector
#写法如下: find_element_by_id() #id定位 find_element_by_name() #name定位 find_element_by_class_name() #class_name定位 find_element_by_tag_name() #tag_name定位 find_element_by_link_text() #link_text定位 find_element_by_partial_link_text() #partial_link_text定位 find_element_by_xpath() #xpath定位 find_element_by_css_selector() #css_selector定位
通过xpath定位,xpath定位常用写法:
find_element_by_xpath("//*[@id='kw']") find_element_by_xpath("//*[@name='wd']") find_element_by_xpath("//input[@class='s_ipt']") find_element_by_xpath("/html/body/form/span/input") find_element_by_xpath("//span[@class='soutu-btn']/input") find_element_by_xpath("//form[@id='form']/span/input") find_element_by_xpath("//input[@id='kw' and @name='wd']")
通过css定位,css定位常用写法:
find_element_by_css_selector("#kw") find_element_by_css_selector("[name=wd]") find_element_by_css_selector(".s_ipt") find_element_by_css_selector("html > body > form > span > input") find_element_by_css_selector("span.soutu-btn> input#kw") find_element_by_css_selector("form#form > span > input")
组合定位
我们可以把上面的定位组合起来使用,加强定位准确性
driver.find_element_by_css_selector("form.fm > span > input.s_ipt")
属性定位
在css中可以使用元素的属性定位,只要属性可以唯一标识这个元素
driver.find_element_by_css_selector("[id='kw']")
用By定位元素
find_ element(方法,通过By来声明定位,并且传入对应定位方法(其实跟上面没什么区别...)
driver.find_element_by_css_selector("[id='kw']") driver.find_element_by_css_selector("[name='kw']")
WebDriver还提供了8种用于定位一组元素的方法
find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_partial_link_text() find_elements_by_xpath() find_elements_by_css_selector() #没错,一毛一样,就是element上加了s
定位一组元素:
from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get("https://www.baidu.com") driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() sleep(1) # 定位一组元素 texts = driver.find_elements_by_xpath('//div/h3/a') # 循环遍历出每一条搜索结果的标题 for t in texts: print(t.text) driver.quit()
结果就不放了,自己试试吧 -.-