1、通过id定位控件
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(2)#等待两秒
driver.find_element_by_id('kw')#定位控件
2、通过name定位控件
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#最大化浏览器
time.sleep(2)#等待2s
driver.find_element_by_name('wd').send_keys('Python')#定位控件
3、通过class_name定位控件
对于class的值中间有空格的,叫复合类,不适合用class_name定位控件。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(2)#等待两秒
driver.find_element_by_class_name('s_ipt').send_keys('Python')#定位控件
4、通过link_text定位控件
适用于控件代码是a标签,有href的属性,且有可跳转的地址。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(2)#等待两秒
driver.find_element_by_link_text('贴吧').click()#定位控件
5、通过partial_link_text定位控件
和link_text的区别,只需输入连续的部分文字即可,但值必须是页面唯一。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(2)#等待两秒
driver.find_element_by_partial_link_text('hao').click()#定位控件
6、通过tag标签名定位
页面同类型标签太多,不建议使用。
7、 通过xpath定位
万能的定位方式。
(1)绝对路径
绝对路径定位策略:
①从html开始向下查找,或者从控件开始向上查找;
②ctrl+f,输入绝对路径查找;
xpath的索引是从1开始,回车之后,黄色高亮行唯一。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_xpath("/html/body/div/div[2]/div[5]/div[1]/div/form/span[1]/input[1]").send_keys('Python')#定位控件
(2)相对路径
通过//开始引用控件,中括号里面加@属性,然后加后面路径。
1)定位父级控件
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_xpath("//form[@id='form']/span[1]/input").send_keys('Python')#定位控件
2)直接定位控件属性
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_xpath("//input[@class='s_ipt']").send_keys('Python')#定位控件
3)若属性不唯一,用and并列条件来定位
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_xpath("//input[@class='s_ipt' and @type='text']").send_keys('Python')#定位控件
4)通过contains关键字定位
通过contains(@属性,‘关键字’),查找该属性包含的关键字,关键字必须是连续的。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_xpath("//input[contains(@value='度一')]").click()#定位控件
8、通过CSS定位
(1)绝对路径
和xpath类似。
①用空格
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('html body div div:nth-child(2) div div div form span(1) input:nth-child(1)').click()#定位控件
②用大于号
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('html>body>div>div:nth-child(2)>div>div>div>form>span(1)>input:nth-child(1)').click()#定位控件
(2)相对路径
1)id属性
通过#id的属性值定位。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('#kw').send_keys('Python')#定位控件
2)class属性
通过点号.加class属性值定位。
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('.s_ipt').send_keys('Python')#定位控件
3)标签名[属性=‘属性值’]定位
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('input[name="wd"]').send_keys('Python')#定位控件
4)多条件并列定位
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('input[name="wd"][class="s_ipt"]').send_keys('Python')#定位控件
5)先定位父级
from selenium import webdriver
import time
driver=webdriver.Chrome()#初始化对象
driver.get('http://www.baidu.com')#打开浏览器
driver.maximize_window()#浏览器最大化
time.sleep(3)#等待两秒
driver.find_element_by_css_selector('div#s_form_wrapper>form>span>input:nth-child(1)).click()#定位控件