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()

 结果就不放了,自己试试吧   -.-

 

posted on 2019-11-15 16:07  左_右  阅读(115)  评论(0编辑  收藏  举报