单个元素的定位
(1)xpath通过绝对路径定位元素
绝对路径是从最外层元素到指定元素之间所有经过元素层级的路径。绝对路径的写法是以单斜杠开头逐级开始编写,不能跳级。
(2)xpath通过相对路径定位元素
相对路径可匹配任意层级的元素,不限制元素的位置。相对路径的写法是以双斜杠开头,双斜杠后面紧跟着元素名称,不确定的元素名称可以使用*代替。
常用的xpath定位元素写法与说明如下表所示
xpath定位元素写法说明
//span/input[1]通过索引定位,表示选取第一个与表达式//span/input匹配的元素
//span/input[last()]通过索引定位,表示选取最后一个与表达式//span/input匹配的元素
//input[@id=‘dl’]通过id属性定位,表示定位id属性值为dl的元素
//input[@name=‘mz’]通过name属性定位,表示定位name属性值为mz的元素
//input[@class=‘s_ipl’]通过class属性定位,表示定位class属性值为s_ipl的元素
//[@id=‘kw’]通过通配符定位,表示定位所有id属性值为kw的元素
//a[@name=‘book’ or 通过逻辑表达式定位,表示定位name属性值为book或者text()=‘music’]文本内容为music的元素
/a[contains(@href’新闻’)and 通过逻辑表达式定位,表示定位href属性中包含“新闻”并text()=‘新闻联播’]且文本内容中包含“新闻联播”的元素
/html/body/input[1]通过绝对路径定位,表示定位/html/body/input下的第一个标签
代码
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
driver.implicitly_wait(100)
time.sleep(2)
# driver.find_element(By.XPATH,'/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input').send_keys('毛绒玩具')
# time.sleep(2)
# driver.find_element(By.XPATH, '/html/body/div[2]/div[1]/div[5]/div/div/form/span[2]/input').click()
# time.sleep(10)
#绝对定位
# driver.find_element(By.XPATH,"/html/body/div/div/div[3]/a[3]").click()
# time.sleep(10)
#相对定位
driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('自动化测试')
time.sleep(2)
driver.find_element(By.XPATH, '//input[@id="su"]').click()
time.sleep(10)