如果id不是動態的,乙個頁面的id是唯一的,最簡單的定位方式。
find_element_by_id(「id_value」)
eg: find_element_by_id(「kw」)
class_name一般情況下都是易重複的
find_element_by_class_name(「class_name_value」)
eg:find_element_by_class_name(「s_ipt」)
name有可能重複
find_element_by_name(「name_value」)
eg:find_element_by_name(「wd」)
find_element_by_partial_link_text(「部分text_value」)
eg:find_element_by_partial_link_text(「登」)
find_element_by_xpath(「xpath」)
6.1:通過屬性定位:find_element_by_xpath("//標籤名[@屬性=『屬性值』]")
find_element_by_xpath("//input[@id=『kw』]")
find_element_by_xpath("//input[@class=『s_ipt』]")
6.2根據元素內容定位元素(實用)
find_element_by_xpath("//p[contains(text(),『京公網』]")
注:說明class屬性包含s的元素://input[contains(@class,『s』)]
6.3組合定位元素
//父元素標籤名/標籤名的屬性值:指的是span下的input標籤下class屬性為s_ipt的元素:
find_element_by_xpath("//span/input[@class=『s_ipt』]「)
多個元素組合定位!!!
eg1: input標籤下id屬性為kw且name屬性為wd的元素
find_element_by_xpath("//input[@class=『s_ipt』 and @name=『wd』]")
eg2:p標籤下內容包含『京公網「且id屬性為jgwab的元素
find_element_by_xpath("//p[contains(text(),『京公網』) and @id=『jgwab』]")
*6.4通過標籤名定位
find_element_by_xpath("//input")
*6.5父子定位元素
查詢有父親元素的標籤名為span,它的所有標籤名叫input的子元素
find_element_by_xpath("//span/input")
find_element_by_android_uiautomator()一般來說定位不會報錯
7.1 text屬性值定位
find_element_by_android_uiautomator(「new uiselector().text(「***x」)」)正常匹配
find_element_by_android_uiautomator(「new uiselector().textcontains(「***」)」)模糊匹配
find_element_by_android_uiautomator("new uiselector().textstartswith(「***」)』)開頭
7.2resource-id、class、conten-desc
find_element_by_android_uiautomator(「new uiselector().resourceid(「***x」)」)
find_element_by_android_uiautomator(「new uiselector().classname(「***x」)」)
find_element_by_android_uiautomator("new uiselector().description(***x)』)
7.3組合定位
eg:weixin_str = 『new uiselector().resourceid(「***x」).classname(「***」)』
注意:需要匯入by類
from selenium.webdriver.common.by import by
find_element(定位的型別,具體定位方式)
定位的型別包括by.id,by.class_name,by.tag_name,by.link_text,by.partial_link_text,by.path,by.css_selector
eg:find_element(by.id,『kw』)
使用:find_element_by_css_selector(「css」)
例項:7.1通過id屬性定位元素
#號表示通過id屬性來定位元素
find_element_by_css_selector("#kw")
7.2通過class屬性定位元素
.號表示通過class屬性來定位元素
find_element_by_css_selector(".s_ipt")
7.3通過標籤名定位元素
find_element_by_css_selector(「input」)
7.4通過屬性定位元素(挺常用的)
find_element_by_css_selector("[name=『wd』]")
find_element_by_css_selector("[maxlength=『255』]")
屬性值包含某個值
屬性值包含wd:適用於由空格分隔的屬性值。
find_element_by_css_selector("[name~=『wd』]")
7.5父子定位元素
查詢有父親元素的標籤名為span,它的所有標籤名叫input的子元素
find_element_by_css_selector(「span>input」)
7.6組合定位元素
標籤名#id屬性值:指的是該input標籤下id屬性為kw的元素
find_element_by_css_selector(「input#kw」)
標籤名.class屬性值:指的是該input標籤下class屬性為s_ipt的元素
find_element_by_css_selector(「input.s_ipt」)
標籤名[屬性=』屬性值『]:指的是該input標籤下name屬性為wd的元素
find_element_by_css_selector(「input[name=『wd』]」)
父元素標籤名》標籤名.class屬性值:指的是span下的input標籤下class屬性為s_ipt的元素
find_element_by_css_selector(「span>input.s_ipt」)
多個屬性組合定位元素(挺常用的)
指的是input標籤下id屬性為kw且name屬性為wd的元素
find_element_by_css_selector(「input.s_ipt[name=『wd』]」)
指的是input標籤下name屬性為wd且maxlength為255的元素
find_element_by_css_selector(「input[name=『wd』][maxlength=『255』]」)
10.1如果某組元素的某個屬性相同,則可以通過這個屬性定位這組元素
find_elements_by_id(「kw」)
find_elements_by_name(「wd」)
…11.1使用format
#list[i]為變數
driver.find_element_by_android_uiautomator(
'text("{}")'
.format
(list[i]))
.click(
)
11.2python使用變數的基本方法
def
enter
(var)
: driver.find_element_by_id(
"%s"
% var)
enter(
'kw'
)def
enter1
(var)
: driver.find_element_by_xpath(
"//input[@id = '%s']"
% var)
enter1(
'kw'
)var = ***
driver.find_element_by_id(
"%s"
%var)
11.3js中的一種固定格式
def
enter1
(var1)
: driver.find_element_by_xpath(
"//input[@id = '"
+ var1 +
"']"
).click(
)enter1(
'su'
)
Python定位元素的方法
通過id定位目標元素 driver.find element by id i1 通過classname定位目標元素 driver.find element by class name c1 通過name屬性定位目標元素 driver.find element by name n1 通過xpath定位...
css selector定位元素
selenium中經常要用css selector定位元素,雖說可以用firefox的firebug firepath直接copy元素的xpath路徑,但有時還是很必要用css selector來定位,也算技多不壓身吧 系統的學習一下,也當是臨陣磨槍。一共8種方式的選擇器。根據元素的標籤定位,如下 ...
CSS Selector定位元素
滴 今日打卡!博主之前寫過一篇關於xpath元素定位的部落格,裡面也有提到過xpath方法和css選擇器方法的比較 今天就補上css選擇器定位筆記。1.css選擇器定位元素 1 標籤選擇器 driver.find element by css selector li 選擇所有 li標籤元素 2 類選...