3.8种元素定位

1.8种常用的元素定位方法:

1.id定位:driver.find_element_by_id(" ")

2.Name定位:driver.find_element_by_name(" ")

3.Class定位:driver.find_element_by_class_name(" ")

4.Tag定位:driver.find_element_by_tag_name(" ")

5.Link定位:driver.find_element_by_link_text(" ")

6.Partial_link定位:driver.find_element_by_Partial_link_text(" ")

7.Xpath定位:driver.find_element_by_xpath(" ")

8.css定位:driver.find_element_by_css_selector(" ")

from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('https://www.baidu.com/')
title = driver.title
print(title)

driver.find_element_by_id("kw").send_keys("python")    #通过id定位搜索框,用send_keys输入文本
driver.find_element_by_id("su").click()    #点击事件
time.sleep(3)

driver.find_element_by_link_text(u"百度首页").click()    #通过link属性定位, 加 u 的作用是把中文字符串转换成unicode 编码
driver.find_element_by_partial_link_text("ao123").click()   #partial_link是一种模糊匹配的方式,对于超长字符串截取其中一部分
driver.back()

driver.find_element_by_name("wd").send_keys("花儿爷")   #使用name属性定位
driver.find_element_by_id("su").click()
driver.back()
time.sleep(3)

driver.find_element_by_class_name("s_ipt").send_keys("苏宁易购")  #使用class属性定位
driver.find_element_by_id("su").submit()       #模拟键盘enter键
driver.back()
time.sleep(3)

#driver.find_element_by_tag_name("input").send_keys("python")  #通过tag标签定位,运行会报错,不建议使用


'''
#通过css定位方法
#1.通过元素的id、name、class这些属性定位
driver.find_element_by_css_selector("#kw").send_keys("python")        #css通过id定位
driver.find_element_by_css_selector(".s_ipt").send_keys('python')   # .号后面跟的是class属性, class="s_ipt"
driver.find_element_by_css_selector("[name='wd']").send_keys('python') # css通过name属性定位
driver.find_element_by_css_selector("[autocomplete='of']").send_keys('python')   #css通过autocomplete属性定位
driver.find_element_by_css_selector("[type='text']").send_keys('python')   #css通过type属性定位

#2.css层级
driver.find_element_by_css_selector("form#form>span>input").send_keys('python')
driver.find_element_by_css_selector("form.fm>span>input").send_keys('python')

3.css索引定位
driver.find_element_by_css_selector("select#nr>option:nth-child(1)").click()
'''

#driver.find_elements_by_xpath(".//*[@id='kw']").send_keys("python")   #通过路径定位
'''
#1.使用绝对路径xpath定位
dr.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[1]/div/form/span[1]/input").send_keys('0')

# 2.使用相对路径的xpath定位
通过元素的id、name、class这些属性定位
driver.find_element_by_xpath("//*[@id='kw']").send_keys("python")
driver.find_element_by_xpath("//*[@name='wd']").send_keys("python")
driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("python")

#3.xpath层级,元素属性不明显时可以定位父元素
driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input").send_keys("python")   #通过定位父元素来定位
driver.find_element_by_xpath("//form[@id='form]/span/input").send_keys("python")   #通过定位爷爷元素来定位

#4.xpath索引定位,元素兄弟一样,无法通过层级定位,指定索引
driver.find_element_by_xpath("//select[@id='nr']/option[1]").click  #索引值通过1算起的
driver.find_element_by_xpath("//select[@id='nr']/option[2]").click

 '''

driver.quit()

后几种复数形式定位方法,定位到的是一组元素返回的是一个队列:

  1. id定位:driver.find_elements_by_id(" ")
  2. Name定位:driver.find_elements_by_name(" ")
  3. Class定位:driver.find_elements_by_class_name(" ")
  4. Tag定位:driver.find_elements_by_tag_name(" ")
  5. Link定位:driver.find_elements_by_link_text(" ")
  6. Partial_link定位:driver.find_elements_by_Partial_link_text(" ")
  7. Xpath定位:driver.find_elements_by_xpath(" ")
  8. css定位:driver.find_elements_by_css_selector(" ")
'''定位一组元素'''
from selenium import webdriver
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")

s=driver.find_elements("css selector",".mnav")[3].click()
原文地址:https://www.cnblogs.com/huaerye/p/9325159.html