Selenium定位方式——id定位,name定位,class定位,link_text定位,partial_link_text定位,tag定位,xpath定位和css定位

 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()#定位控件

 

 

你可能感兴趣的:(Selenium,selenium,python)