2019-03-27 元素定位的常用方法

元素定位應該是自動化測試的核心扇商,要想操作一個元素歌憨,首先應該識別這個元素衣陶。

webdriver提供了一系列的元素定位方法,常用的有以下幾種:

id

name

class name

link_text

partial link text

tag_name

xpath

css selector

id和name定位

案例:打開百度首頁落竹,在搜索框自動輸入“Selenium”關鍵詞泌霍,然后點擊搜索按鈕,查看搜索頁面筋量。

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

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

#driver.find_element_by_id("kw").send_keys("selenium")

driver.find_element_by_name("wd").send_keys("selenium")

sleep(2)

driver.find_element_by_id("su").click()

sleep(3)

driver.quit()

tag name定位

案例:打開http://192.168.20.214/videoclient/頁面烹吵,在用戶名輸入框輸入用戶名“vorx”

from selenium import webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("http://192.168.20.214/videoclient/")

sleep(5)

# 定位標簽名為input的元素

#driver.find_element_by_tag_name("input").send_keys("vorx")

#獲取頁面所有標簽名為“input”的標簽。

driver.find_elements_by_tag_name("input")[2].send_keys("vorx")

driver.find_elements_by_tag_name("input")[3].send_keys("vorx")

# 點擊登錄按鈕

# driver.find_element_by_id("btnLogin").click()

driver.find_elements_by_tag_name("input")[4].click()

sleep(5)

driver.quit()

class_name定位

根據(jù)標簽中屬性class來進行定位的一種方法

案例:打開百度首頁桨武,在搜索框自動輸入“selenium”肋拔,然后點擊搜索按鈕,查看搜索頁面呀酸。

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

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

driver.find_element_by_class_name("s_ipt").send_keys("selenium")

sleep(2)

driver.find_element_by_id("su").click()

sleep(3)

driver.quit()

link_text定位

link_test定位就是根據(jù)超鏈接文字進行定位凉蜂。

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

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

driver.find_element_by_link_text("新聞").click()

sleep(2)

driver.find_element_by_partial_link_text("國內").click()

sleep(3)

driver.quit()

XPath定位

XPath即為XML路徑語言,它是一種用來確定XML文檔中某部分位置的語言性誉。XPath基于XML的樹狀結構窿吩,提供在數(shù)據(jù)結構樹中找尋節(jié)點的能力。

xpath絕對與相對定位

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()driver.get("http://www.baidu.com")

# 絕對路徑定位

#driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[1]/div[1]/div[1]/form/span[1]/input").send_keys("selenium")

# 利用元素屬性定位--定位到input標簽中為kw的元素

# driver.find_element_by_xpath("http://input[@id='kw']").send_keys("selenium")

# 定位input標簽中name屬性為wd的元素

# driver.find_element_by_xpath("http://input[@name='wd']").send_keys("selenium")

# 定位所有標簽元素中错览,class屬性為s_ipt的元素

driver.find_element_by_xpath("http://*[@class='s_ipt']").send_keys("selenium")

sleep(2)

driver.find_element_by_id("su").click()

sleep(3)

driver.quit()

Xpath層級與邏輯定位

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("http://192.168.20.214/videoclient/")

# 層級和屬性結合定位driver.find_element_by_xpath("http://form[@id='form1']/div[4]/div[1]/div[2]/div[2]/input").send_keys("vorx")

driver.find_element_by_xpath("http://form[@id='form1']/div[4]/div[1]/div[2]/div[3]/input").send_keys("vorx")

# 邏輯運算組合定位

# driver.find_element_by_xpath("http://input[@class='i-text' and @name='UserName']").send_keys("vorx")

# driver.find_element_by_xpath("http://input[@class='i-text' and @name='PassWord']").send_keys("vorx")

sleep(3)

driver.find_element_by_xpath("http://*[@id='btnLogin']").click()

sleep(3)

driver.quit()

Css定位

Selenium極力推薦使用CSS定位纫雁,而不是Xpath來定位元素,原因是CSS定位比XPath定位速度快倾哺,語法也更加簡潔轧邪。

css常用定位方法

1. find element by css selector()

2. #id id選擇器根據(jù)id屬性類定位元素

3. .class class選擇器,根據(jù)class屬性值來定位元素

4. [attribute=’value’]根據(jù)屬性來定位元素

5. element>element根據(jù)元素層級來定位 父元素>子元素

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

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

# 根據(jù)id來定位

# driver.find_element_by_css_selector("#kw").send_keys("selenium")

# driver.find_element_by_css_selector("#su").click()

# 根據(jù)class定位

# driver.find_element_by_css_selector(".s_ipt").send_keys("selenium")

# driver.find_element_by_css_selector(".bg.s_btn").send_keys("selenium")

# 根據(jù)屬性來定位

#driver.find_element_by_css_selector(“[autocomplete='off']").send_keys("selenium")

# sleep(3)

# driver.find_element_by_id("su").click()

# sleep(3)

# 通過元素層級來定位driver.find_element_by_css_selector("form#form>span>input").send_keys("selenium")

driver.find_element_by_css_selector("form#form>span>input[type='submit']").click()

sleep(3)

driver.quit()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末羞海,一起剝皮案震驚了整個濱河市忌愚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌却邓,老刑警劉巖硕糊,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異腊徙,居然都是意外死亡简十,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門撬腾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勺远,“玉大人,你說我怎么就攤上這事时鸵〗悍辏” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵饰潜,是天一觀的道長初坠。 經常有香客問我,道長彭雾,這世上最難降的妖魔是什么碟刺? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮薯酝,結果婚禮上半沽,老公的妹妹穿的比我還像新娘爽柒。我一直安慰自己,他們只是感情好者填,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布浩村。 她就那樣靜靜地躺著,像睡著了一般占哟。 火紅的嫁衣襯著肌膚如雪心墅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天榨乎,我揣著相機與錄音怎燥,去河邊找鬼。 笑死蜜暑,一個胖子當著我的面吹牛铐姚,可吹牛的內容都是我干的。 我是一名探鬼主播肛捍,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谦屑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篇梭?” 一聲冷哼從身側響起氢橙,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恬偷,沒想到半個月后悍手,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡袍患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年坦康,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诡延。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡滞欠,死狀恐怖,靈堂內的尸體忽然破棺而出肆良,到底是詐尸還是另有隱情筛璧,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布惹恃,位于F島的核電站夭谤,受9級特大地震影響,放射性物質發(fā)生泄漏巫糙。R本人自食惡果不足惜朗儒,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醉锄,春花似錦乏悄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妆够,卻和暖如春识啦,著一層夾襖步出監(jiān)牢的瞬間负蚊,已是汗流浹背神妹。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留家妆,地道東北人鸵荠。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像伤极,于是被迫代替她去往敵國和親蛹找。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容