1、通過id定位元素
寫法1:
element = driver.find_element
_by_id("kw")
寫法2:
from selenium.webdriver.common.by
import By
element = driver.find_element(by=By.ID, value="kw")
Tips: by=By.ID表示以id的方式定位web元素,下面的例子有類似的寫法以此類推
2、通過class定位元素
寫法1:
cheeses = driver.find_elements_by_
class_name("cheese")
Tips:注意,這里返回的是一個包含web元素的列表,下同
寫法2:
from selenium.webdriver.common.by import By
cheeses = driver.find_elements(By.
CLASS_NAME, "cheese")
3、通過name定位元素
寫法1:
cheese = driver.find_element_by_name("cheese")
寫法2:
from selenium.webdriver.common.by import By
cheese = driver.find_element(By.NAME, "cheese")
4、通過tag(html標簽)定位元素
寫法1:
如果iframe這個tag在本html中是唯一的,可以根據iframe這個tag名來找到該元素
frame = driver.find_element_by_
tag_name("iframe")
寫法2:
from selenium.webdriver.common.by import By
frame = driver.find_element(By.
TAG_NAME, "iframe")
注意,通過title標簽名獲取title元素,打印的文本值為空:
ele2=driver.find_element_by_tag_name('title')
print(ele2.text)
5、獲取頁面中title值
Title
是一個特殊的元素,標簽內的文本表示頁面的標題,
可以通過driver.title屬性獲取頁面標題
6、通過超文本連接(link)來定位元素
寫法1:
ele = driver.find_element_by_
link_text("轉到百度")
寫法2:
from selenium.webdriver.common.by import By
ele = driver.find_element(By.
LINK_TEXT, "轉到百度")
7、通過partial_link定位
當全稱很長時,使用模糊匹配
如百度首頁,點擊hao123時:
driver.find_element_by_partial_link_text('ao123').click()
8、css定位方法
https://www.cnblogs.com/aiyumo/p/12576150.html
9、xpath定位方法
https://www.cnblogs.com/aiyumo/p/12576380.html
總結:有時候通過上面的方法定位不到元素,只能根據上層元素去定位
注意:現在很多頁面加載后(也加載javascript前端代碼), 由前端代碼動態改變界面的內容,比如從后端獲取一些數據后,再動態改變界面的內容。尤其是很多采用了框架像 angular, react, vue這些都會這樣做,這樣會導致一個問題,操作后再去操作之前定位的元素,會報錯,每次都要重新獲取元素,使元素一直都是最新的。