定位元素-八種定位方式
一、瀏覽器基本操作
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定位用的較多,可以直接複製也可以自己寫