Selenium提供多种find_element_by 方法用于定位页面元素。这些方法根据一定的标准去查找元素,如果元素被正常定位,那么WebElement实例将返回。反之,将抛出NoSuchElementException的异常。同时,Selenium还提供多种find_elements_by 方法去定位多个元素,这类方法根据所匹配的值,搜索并返回一个list数组(元素)。
Selenium提供8种find_element_by 方法用于定位元素。接下来的部分,我们将逐一介绍方法细节,如下表所示。
find_element_by 方法
方 法
描 述
参 数
示 例
ind_element_by_id(id)
通过元素的ID属性值来定位元素
id:元素的ID
driver.find_element_by_id('search')
find_element_by_name(name)
通过元素的name属性值来定位元素
name:元素的name
driver.find_element_by_name('q')
find_element_by_class_name(name)
通过元素的class名来定位元素
name:元素的类名
driver.find_element_by_class_name('input-text')
find_element_by_tag_name(name)
通过元素的tag name来定位元素
name:tag name
driver.find_element_by_tag_name('input')
find_element_by_xpath(xpath)
通过XPath来定位元素
XPath:元素的XPath
driver.find_element_by_xpath('//form[0]/div[0]/input[0]')
find_element_by_css_selector(css_selector)
通过CSS选择器来定位一组元素
css_selector:元素的CSS选择器
driver.find_element_by_css_selector('#search')
find_element_by_link_text(link_text)
通过元素标签对之间的文本信息来定位一组元素
link_text:文本信息
driver.find_element_by_link_text('Log In')
find_element_by_partial_link_text(link_text)
通过元素标签对之间的部分文本信息来定位一组元素
link_text:部分文本信息
driver.find_element_by_partial_link_text('Log')
通过ID查找元素是查找页面上元素的最佳方法。
find_element_by_id()和find_elements_by_id()方法返回与ID属性值匹配的一个元素或一组元素。
find_element_by_id()方法返回的是与ID属性值匹配的第一元素,如果没有元素与之匹配,则抛出NoSuchElementException异常。
如下图所示,我们尝试来定位搜索框。
通过查看HTML,我们可以看到搜索框的ID值被定义为search。
class="input-text" maxlength="128" autocomplete="of