学科分类
目录
网络爬虫

定位UI元素

Selenium 的WebDriver中提供了各种方法来定位页面上的元素,这些方法列表如下所示:

find_element_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

接下来,我们使用一些示例介绍这些方法是如何定位页面元素的。

1. 通过id标签值

例如,对如下表单元素:

<div id="coolestWidgetEvah">...</div>

可使用id标签值来定位,具体实现如下:

element = driver.find_element_by_id("coolestWidgetEvah")

或者如下:

from selenium.webdriver.common.by import By
element = driver.find_element(by=By.ID, value="coolestWidgetEvah")

2. **通过name标签值

例如,对如下表单元素:

<input name="cheese" type="text"/>

可使用name标签值来定位,具体实现如下:

cheese = driver.find_element_by_name("cheese")

或者如下:

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.NAME, "cheese")

3. 通过标签名

例如,对如下表单元素:

<iframe src="..."></iframe>

可使用标签名来定位,具体实现如下:

frame = driver.find_element_by_tag_name("iframe")

或者如下:

from selenium.webdriver.common.by import By
frame = driver.find_element(By.TAG_NAME, "iframe")

4. 通过XPath来匹配

例如,对如下表单元素:

<input type="text" name="example" />
<INPUT type="text" name="other" />

可使用XPath来定位,具体实现如下:

inputs = driver.find_elements_by_xpath("//input")

或者如下:

from selenium.webdriver.common.by import By
inputs = driver.find_elements(By.XPATH, "//input")

5. 通过链接文本

例如,对如下表单元素:

<a href="http://www.google.com/search?q=cheese">cheese</a>

可使用链接文本cheese来定位,具体实现如下:

cheese = driver.find_element_by_link_text("cheese")

或者如下:

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.LINK_TEXT, "cheese")

6. 通过部分链接文本

例如,对如下表单元素:

<a href="http://www.google.com/search?q=cheese">search for cheese</a>>

可使用链接文本的一部分来定位,具体实现如下:

cheese = driver.find_element_by_partial_link_text("cheese")

或者如下:

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.PARTIAL_LINK_TEXT, "cheese")

7. 通过CSS

例如,对如下表单元素:

<div id="food"><span class="dairy">milk</span>
<span class="dairy aged">cheese</span></div>

可使用CSS样式名称来定位,具体实现如下:

cheese = driver.find_element_by_css_selector("#food span.dairy.aged")

或者如下:

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.CSS_SELECTOR, "#food span.dairy.aged")
点击此处
隐藏目录