1. 程式人生 > >定位元素-八種定位方式

定位元素-八種定位方式

一、瀏覽器基本操作

1.瀏覽器載入URL

driver.get("https://www.baidu.com/")

2.瀏覽器最大化

driver.maximize_window()

3.設定瀏覽器寬、高

# 引數數字為畫素點,設定瀏覽器寬高都為800畫素
driver.set_window_size(800,800)

4.控制瀏覽器前進、後退

driver.forward()
driver.back()

5.重新整理

driver.refresh()

6.獲取當前頁面的標題

driver.title()

二、元素定位

webdriver提供了一系列的元素定位方法

元素 webdriver中的方法
id find_element_by_id()
name find_element_by_name()
class name find_element_by_class_name()
tag name find_element_by_tag_name()
link text find_element_by_link_text()
partial link text find_element_by_partial_link_text()
xpath find_element_by_xpath()
css selector find_element_by_css_selector()

 

三、id元素定位(根據標籤的id定位)

1.示例:百度搜索框

2.F12查詢到頁面元素為以下html程式碼,查詢id="kw"的元素

 

3.id定位

#coding:utf-8
from selenium import webdriver
import time

# 百度搜索selenium
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("selenium")  # id 定位輸入框元素
driver.find_element_by_id("su").click()   # id 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

四、name元素定位(根據標籤的name定位)

1.示例:示例:百度搜索框

2.F12查詢到頁面元素,name="wd"

3.name定位

from selenium import webdriver
import time

# 百度搜索
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_name("wd").send_keys("selenium")  # name 定位輸入框元素
driver.find_element_by_id("su").click()  # id 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

五、xpath元素定位

1.示例:百度搜索框

一般的正常copy-xpath就可以了,但是copy不能保證百分百準確,我們也可以手寫xpath,寫好可以在下方搜尋一下

 

2.xpath定位

from selenium import webdriver
import time

# 百度搜索
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_xpath("//form/span/input[@id='kw']").send_keys("selenium")  # xpath 定位輸入框元素
driver.find_element_by_xpath("//form/span/input[@id='su']").click()   # xpath 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

六、class name 定位

1.示例:百度搜索框

2.class name 定位

from selenium import webdriver
import time

# 百度搜索
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_class_name("s_ipt").send_keys("selenium")  # class name 定位輸入框元素
driver.find_element_by_class_name("bg s_btn").click()   # class name 定位"百度一下"元素
time.sleep(3)
driver.quit()

 

七、link text定位

1.link text用來定位文字連結,如通過在百度首頁點選'新聞'、'地圖'等都可以進入到對應的頁面,因此可以用link進行定位:

2.示例:百度首頁“新聞”連結

3.link text定位

from selenium import webdriver
import time

# 點選百度首頁“新聞”標籤
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
driver.find_element_by_link_text("新聞").click()
time.sleep(3)
driver.quit()

 

八、partial link text定位

1.partial link text定位方式為link text的一個補充,當檔案連結過長時,部分匹配定位

2.如以下連結過長定位時只需要擷取一部分即可

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">這是全世界全球最關注的新聞</a>

3.partial link text定位

driver.find_element_by_partial_link_text("關注的新聞").click()

 

九、css selector定位(不太常用)

1.css Selector定位實際就是HTML的css選擇器的標籤定位

用css定位就不需要從最上面一層開始定位了,可以從當前層最近的容易定位的元素(class或者id)開始。

 

十、tag name定位(很不常用,不好定位)

當要定位一組元素相同元素時,可以考慮用tagName或name。

 

總結:

1. 當頁面元素有id屬性時,最好儘量用id來定位。

2. 當要定位一組元素相同元素時,可以考慮用tagName或name。

3. 當有連結需要定位時,可以考慮linkText或partialLinkText方式。

4. xpath定位用的較多,可以直接複製也可以自己寫