11.8.2 在页面中寻找元素

WebDriver 对象有好几种方法,用于在页面中寻找元素。它们被分成find_element_*和
find_elements_*方法。find_element_*方法返回一个 WebElement  对象,代表页面中匹配查询的第一个元素。find_elements_*方法返回 
WebElement_*对象的列表,包含页面中所有匹配的元素。
表 11-3 展示了 find_element_*和 find_elements_*方法的几个例子,它们在变量 browser 中保存的WebDriver 对象上调用。
表 11-3    selenium 的 WebDriver 方法,用于寻找元素
方法名                                                          返回的WebElement 对象/列表


browser.find_element_by_class_name(name) browser.find_elements_by_class_name(name) 
browser.find_element_by_css_selector(selector)
browser.find_elements_by_css_selector(selector)
browser.find_element_by_id(id) browser.find_elements_by_id(id)
browser.find_element_by_link_text(text) browser.find_elements_by_link_text(text) 
browser.find_element_by_partial_link_text(text)
browser.find_elements_by_partial_link_text(text)
browser.find_element_by_name(name) browser.find_elements_by_name(name)
browser.find_element_by_tag_name(name) browser.find_elements_by_tag_name(name)

使用CSS 类name 的元素匹配CSS selector 的元素匹配 id 属性值的元素
完全匹配提供的 text 的<a>元素包含提供的 text 的<a>元素
匹配 name 属性值的元素

匹配标签 name 的元素
(大小写无关,<a>元素匹配'a'和'A')

除了*_by_tag_name()方法,所有方法的参数都是区分大小写的。如果页面上没有元素匹配该方法要查找的元素,selenium 模块就会抛出 NoSuchElement 
异常。如果你不希望这个异常让程序崩溃,就在代码中添加 try 和 except 语句。
一旦有了WebElement 对象,就可以读取表 11-4 中的属性,或调用其中的方法,了解它的更多功能。
表 11-4    WebElement 的属性和方法
属性或方法                 描述
tag_name                          标签名,例如 'a'表示<a>元素 get_attribute(name)          该元素name 属性的值
text                                    该元素内的文本,例如<span>hello</span>中的'hello'
clear()                                对于文本字段或文本区域元素,清除其中输入的文本
is_displayed()                   如果该元素可见,返回 True,否则返回 False
is_enabled()                      对于输入元素,如果该元素启用,返回 True,否则返回 False
is_selected()                      对于复选框或单选框元素,如果该元素被选中,选择 True,否则返回 False location                 
            一个字典,包含键'x'和'y',表示该元素在页面上的位置

例如,打开一个新的文件编辑器,输入以下程序:
from  selenium  import  webdriver browser  =  webdriver.Firefox()
browser.get('http://inventwithpython.com') try:
elem  =  browser.find_element_by_class_name('bookcover')
print('Found  <%s>  element  with  that  class  name!'  %  (elem.tag_name)) except:
print('Was  not  able  to  find  an  element  with  that  name.')
这里我们打开 FireFox,让它指向一个 URL。在这个页面上,我们试图找到带有类名'bookcover'的元素。如果找到这样的元素,我们就用tag_name 
属性将它的标签名打印出来。如果没有找到这样的元素,就打印不同的信息。
这个程序的输出如下:
Found  <img>  element  with  that  class  name!
我们发现了一个元素带有类名'bookcover',它的标签名是'img'。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值