掌握元素定位

首先忘晤,最重要的一條就是禁止手動輸入宛蚓,必須復制粘貼,必須I杷F嗬簟!

根據(jù)元素的一個特征來定位,6種闰蛔。

id:?元素的id屬性痕钢。-?唯一。

class:?元素的class屬性

tag:?元素的標簽名

name:?元素的name屬性

針對a元素:

link_text:?針對a元素的文本內(nèi)容?-?完全匹配

partial_link_text:?針對a元素的文本內(nèi)容?-?包含

組合元素的多種特征/關系?序六,來定位任连。2種?-?萬能定位。

xpath

css?selector:?css選擇器

相對定位:以雙斜杠開頭//

相對路徑:相對參照物例诀。//相對于前面節(jié)點随抠,如果//在表達式開頭則表示相對整個html。

定位原則:

1繁涂、不依靠節(jié)點順序和節(jié)點位置

2拱她、只要能夠找得到匹配特征的元素就可以。

定位輔助工具:

F12->elements->Ctrl+F

相對定位表達式(重點扔罪!常用椭懊!優(yōu)先考慮!的方法):

1步势、//標簽名[@屬性名=值]

2、//標簽名[text()=值]

3背犯、//標簽名[contains(@屬性名,值)]? ? ? ? ? ?//標簽名[contains(text(),值)]

4坏瘩、*標簽名或者屬性名都可以用*表示匹配所有? ? ? ?//*[contains(@*,"TopiDiscuss")]?

單單一屬性,無法唯一定位到元素

可以組合

邏輯:and? 漠魏、? or

//標簽名[text()=值 and??@屬性名=值? and??contains(@屬性名,值)]

//標簽名[text()=值 or? @屬性名=值? or? contains(@屬性名,值)]

僅僅依靠元素本身的特征倔矾,已經(jīng)無法唯一定位。

層級:

//祖先節(jié)點//要找的節(jié)點

//div[@id="u1"]//a[@name="tj-login"]

軸定位:

元素的兄弟姐妹、父母祖先

軸運算:

ancestor:祖先節(jié)點哪自,包括父節(jié)點

parent:父節(jié)點

定位的某個節(jié)點/軸名稱::節(jié)點

定位id=form的form節(jié)點中 子元素中name=issp的input標簽

//form[@id='form']/child::input[@name='issp']

定位id=form的form節(jié)點中 祖先元素中id='wrapper的div標簽

//form[@id='form']/ancestor::div[@id='wrapper']



preceding:當前元素節(jié)點標簽之前的所有節(jié)點(按照html頁面先后順序)

preceding-sibling:當前元素節(jié)點標簽之前的所有兄弟節(jié)點

following:當前元素節(jié)點標簽之后的所有節(jié)點(按照html頁面先后順序)

following-sibling:當前元素節(jié)點標簽之后的所有兄弟節(jié)點

另外一種解釋:

parent::div 上層父節(jié)點丰包,你那叫div的親生爸爸,最多有一個壤巷;

child::div 下層所有子節(jié)點邑彪,你的所有親兒子中叫div的;

ancestor::div 上面所有直系節(jié)點胧华,是你親生爸爸或者你親爹或者你親爹的爸爸中叫div的寄症;

descendant::div 下面所有節(jié)點,你的后代中叫div的矩动,不包括你弟弟的后代有巧;

following::div 自你以下頁面中所有節(jié)點叫div的;

following-sibling::div 同層下節(jié)點悲没,你所有的親弟弟中叫div的篮迎;

preceding::div 同層上節(jié)點,你所有的親哥哥以及他們的后代中叫div的示姿;

preceding-sibling::div 同層上節(jié)點甜橱,你所有的親哥哥中叫div的;


代碼示例:

from timeimport sleep

# 引入第三方庫

from seleniumimport webdriver

# 打開瀏覽器 - 指令1 - 開啟與瀏覽器之間的會話峻凫。

driver = webdriver.Chrome()

# 最大化窗口

driver.maximize_window()

# 訪問百度首頁 - 指令2

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

# 合并寫法

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

# class

ele = driver.find_element_by_class_name("s_ipt")# 只支持一個class值

eles = driver.find_elements_by_class_name("s_ipt")

# tag_name

driver.find_element_by_tag_name("input")

driver.find_elements_by_tag_name("input")

# name

driver.find_element_by_name("wd")

driver.find_elements_by_name("wd")

# link_text? partial_link_text

driver.find_element_by_link_text("hao123")

driver.find_elements_by_link_text("hao123")

driver.find_element_by_partial_link_text("123")

driver.find_elements_by_partial_link_text("123")

sleep(7)

# 關閉當前窗口渗鬼。

driver.close()

# 關閉瀏覽器,關閉會話荧琼。

driver.quit()

xpath表達式

driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_login"]').click()

css定位

driver.find_element_by_css_selector('div#u1 a[name="tj_login"]').click()

# 找到登陸按鈕譬胎,并點擊,彈出登陸窗口

loc = (By.XPATH,'//div[@id="u1"]//a[@name="tj_login"]')

driver.find_element(*loc).click()

# 元素表達

loc = (By.ID,'TANGRAM__PSP_11__footerULoginBtn')

# 等待 - 等待元素可見命锄。

wait.until(EC.visibility_of_element_located(loc))

# 在登陸的窗口當中堰乔,點擊? 用戶名登陸

driver.save_screenshot("登陸窗口.png")# 截圖

driver.find_element(*loc).click()

# 等待用戶名輸入框可見,然后輸入用戶名

loc = (By.ID,"TANGRAM__PSP_11__userName")

ele = wait.until(EC.visibility_of_element_located(loc))

print("等待元素可見的返回對象是:",ele)

driver.find_element(*loc).send_keys("123456789")

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脐恩,一起剝皮案震驚了整個濱河市镐侯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驶冒,老刑警劉巖苟翻,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骗污,居然都是意外死亡崇猫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門需忿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诅炉,“玉大人蜡歹,你說我怎么就攤上這事√樯眨” “怎么了月而?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長议纯。 經(jīng)常有香客問我父款,道長,這世上最難降的妖魔是什么痹扇? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任铛漓,我火速辦了婚禮,結(jié)果婚禮上鲫构,老公的妹妹穿的比我還像新娘浓恶。我一直安慰自己,他們只是感情好结笨,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布包晰。 她就那樣靜靜地躺著,像睡著了一般炕吸。 火紅的嫁衣襯著肌膚如雪伐憾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天赫模,我揣著相機與錄音树肃,去河邊找鬼。 笑死瀑罗,一個胖子當著我的面吹牛胸嘴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斩祭,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劣像,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了摧玫?” 一聲冷哼從身側(cè)響起耳奕,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诬像,沒想到半個月后屋群,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡坏挠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年芍躏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片癞揉。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喊熟,到底是詐尸還是另有隱情柏肪,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布芥牌,位于F島的核電站烦味,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏壁拉。R本人自食惡果不足惜谬俄,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弃理。 院中可真熱鬧溃论,春花似錦、人聲如沸痘昌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辆苔。三九已至算灸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驻啤,已是汗流浹背菲驴。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骑冗,地道東北人赊瞬。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像沐旨,于是被迫代替她去往敵國和親森逮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355