selenium WebDriver定位元素
- id定位:find_element_by_id()
- name定位:find_element_by_name()
- class定位:find_element_by_class_name()
- link定位:find_element_by_link_text()
- partial link定位:find_element_by_partial_link_text()
- tag定位:find_element_by_tag_name()
- xpath定位:find_element_by_xpath()
- css定位:find_element_by_css_selector()
#-----------------------------------------------------------------------
# 通過(guò)元素id定位
#-----------------------------------------------------------------------
driver.find_element_by_id("userid")
#-----------------------------------------------------------------------
# 通過(guò)class_name定位
#-----------------------------------------------------------------------
# 通過(guò)class_name定位一個(gè)元素
driver.find_element_by_class_name("userclass")
# 通過(guò)class_name定位一批元素,返回結(jié)果為數(shù)組,下標(biāo)從0開(kāi)始
driver.find_elements_by_class_name("userclass")
driver.find_elements_by_class_name("userclass")[1].click()
#-----------------------------------------------------------------------
# 通過(guò)xpath定位元素
#-----------------------------------------------------------------------
# 根據(jù)元素屬性和值定位
# 定位id="userid"的元素
driver.find_element_by_xpath("http://*[@id=\"userid\"]")
# 定位placeholder屬性為"請(qǐng)輸入名字"的input元素,即<input placeholder="請(qǐng)輸入名字">
driver.find_element_by_xpath("http://input[@placeholder=\"請(qǐng)輸入名字\"]")
# 定位id="userid"元素-下層元素span-下層元素第二個(gè)input
driver.find_element_by_xpath("http://*[@id=\"userid\"]/span/input[1]")
# 多條件定位
driver.find_element_by_xpath("http://input[@name=\"username\" and @value=\"lxm\"]")
//input[@name='continue'][@type='button'] # 待驗(yàn)證
driver.find_element_by_id("id").find_element_by_class_name("name") # 待驗(yàn)證
# 根據(jù)文本定位元素
# 定位文本為“世界真美好”的li元素
driver.find_element_by_xpath("http://li[text()=\"世界真美好\"]")
# 定位文本為“我愛(ài)這個(gè)世界”的span元素
driver.find_element_by_xpath("http://span[text()=\"我愛(ài)這個(gè)世界\"]")
# 定位文本為“世界真美好”的li元素-可傳入變量
str = "世界真美好"
driver.find_element_by_xpath("http://li[text()=\"%s\"]" % str)
# 根據(jù)關(guān)鍵字
driver.find_element_by_xpath("http://a[contains(@href,\"#id1\")]")
#在a標(biāo)簽下有個(gè)文本(text)包含(contains)'網(wǎng)頁(yè)' 的元素
driver.find_element_by_xpath("http://a[contains(text(),'網(wǎng)頁(yè)')]").click()
#有個(gè)叫a的標(biāo)簽,他有個(gè)鏈接href='http://www.baidu.com/ 的元素
driver.find_element_by_xpath("http://a[@).click()
#-----------------------------------------------------------------------
# 通過(guò)tag定位元素
#-----------------------------------------------------------------------
# 查找input標(biāo)簽的元素
driver.find_element_by_tag_name("input")
父子、兄弟節(jié)點(diǎn)定位
.表示當(dāng)前節(jié)點(diǎn),…表示父節(jié)點(diǎn),/表示絕對(duì)路徑,//表示相對(duì)路徑文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-400130.html
根據(jù)父節(jié)點(diǎn)定位子節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"國(guó)家\"]/div/input/span")
# child::input選取當(dāng)前節(jié)點(diǎn)的input子節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"國(guó)家\"]/child::div/child::input/child::span")
根據(jù)子節(jié)點(diǎn)定位父節(jié)點(diǎn)
# ..表示父節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"上海\"]/../../span")
# parent::span選取當(dāng)前節(jié)點(diǎn)的span父節(jié)點(diǎn)
driver.find_element_by_xpath("http://div[text()=\"上海\"]/parent::*/parent::span")
根據(jù)兄節(jié)點(diǎn)定位弟節(jié)點(diǎn)
# 通過(guò)兄節(jié)點(diǎn)找到父節(jié)點(diǎn),由父節(jié)點(diǎn)定位弟節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"上海\"]/../span[3]")
# following-sibling 選取當(dāng)前節(jié)點(diǎn)之后的同級(jí)節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"上海\"]/following-sibling::span")
driver.find_element_by_xpath("http://*[text()=\"上海\"]/following-sibling::span[2]")
根據(jù)弟節(jié)點(diǎn)定位兄節(jié)點(diǎn)
# 通過(guò)弟節(jié)點(diǎn)找到父節(jié)點(diǎn),由父節(jié)點(diǎn)定位兄節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"上海\"]/../span[0]")
# preceding-sibling 選取當(dāng)前節(jié)點(diǎn)之前的同級(jí)節(jié)點(diǎn)
driver.find_element_by_xpath("http://*[text()=\"上海\"]/preceding-sibling::span")
在元素上操作
click()
# 點(diǎn)擊操作
click()
# 單擊id為userid的元素
driver.find_element_by_id("userid").click()
send_keys()
# 向元素發(fā)送文本
send_keys("luxuemei")
# 向id為userid的元素填充文本luxuemei
driver.find_element_by_id("userid").send_keys("luxuemei")
獲取元素上的文本
# 獲取元素文本
driver_text = driver.find_element_by_id("userid").text
clear()
# 清除元素的內(nèi)容,如清除input框內(nèi)的文字
driver.find_element_by_id("userid").clear()
get_attribute()
# 獲取元素屬性值
driver.find_element_by_id("userid").get_attribute("value")
WebDriverWait
# 文件引入
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 每0.5s定位ID為userid的元素,如果定位成功,執(zhí)行下面的代碼;直至30s超時(shí)拋出異常
# 可用來(lái)檢查頁(yè)面元素是否加載完成
WebDriverWait(driver, 30, 0.5).until(EC.presence_of_element_located(By.ID, "userid"))
- 官網(wǎng)地址:Locator strategies | Selenium
- 參考文檔:http://www.selenium.org.cn/category/use
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-400130.html
到了這里,關(guān)于selenium定位元素(包括父子,兄弟)及常見(jiàn)操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!