8種元素定位的方法
- ID是在頁面上定位元素的首選方法省店,工作速度非常快风科,避免復(fù)雜的DOM遍歷
- XPath語法很復(fù)雜,并且經(jīng)常很難調(diào)試巩掺,未經(jīng)過瀏覽器廠商的性能測試,并且運行速度很慢
- 基于鏈接文本和部分鏈接文本的選擇策略有其缺點页畦,即只能對鏈接元素起作用
- 標簽名定位元素的方法胖替,在調(diào)用findElements(By)方法返回元素集合時非常有用
方法名稱 | Python代碼 | 描述 |
---|---|---|
id | find_element_by_id() | 定位id屬性與搜索值匹配的元素 |
name | find_element_by_name() | 定位name屬性與搜索值匹配的元素 |
tag | find_element_by_tag_name() | 定位標簽名稱與搜索值匹配的元素 |
class | find_element_by_class_name() | 定位類名稱中包含搜索值的元素(不能使用復(fù)合類名) |
link text | find_element_by_link_text() | 定位其可視文本與搜索值匹配的錨元素 |
xpath | find_element_by_xpath() | 定位與XPath表達式匹配的元素 |
css selector | find_element_by_css_selector() | 定位與CSS選擇器匹配的元素 |
定位元素
WebDriver中定位元素是在WebDriver實例對象(driver)上完成的
-
find_element_by方法返回另一個基本對象類型WebElement
- WebDriver代表瀏覽器
- WebElement表示特點的DOM節(jié)點(控件,例如鏈接或輸入欄等)
-
代碼
-
WebDriver實例
driver = webdriver.Chrome()
-
跳轉(zhuǎn)鏈接
driver.get("http://cn.bing.com")
-
定位方法(單元素)
driver.find_element_by_id("sb_form_q")
-
定位方法(多元素)
dirver.find_element_by_css_selector("#cheese li")
-
設(shè)置元素文本
-
使用sendKeys方法設(shè)置元素的文本
driver.find_element_by_id("sb_form_q").send_keys("Selenium")