Splinter入门(六) links的API

Splinter入门(六) links的API

(查找链接)Finding links

 有时候,可能只关注含有连接links的元素,因此,在Splinter中,提供了links 命名空间,其下有多个方法可以查找元素。

links_found = browser.links.find_by_text('Link for Example.com')   # 通过Text查找(全匹配)(这里的text指的是a标签内的Text)
links_found = browser.links.find_by_partial_text('for Example')    # 通过Text查找(部分匹配)(这里的text指的是a标签内的Text)
links_found = browser.links.find_by_href('http://example.com')     # 通过链接查找(全匹配)
links_found = browser.links.find_by_partial_href('example')        # 通过链接查找(部分匹配)

links_found = browser.find_by_css('.main').links.find_by_text('Link for Example.com')
links_found = browser.find_by_css('.main').links.find_by_partial_text('for Example.com')
links_found = browser.find_by_css('.main').links.find_by_href('http://example.com')
links_found = browser.find_by_css('.main').links.find_by_partial_href('example')

 以上的find_*方法均返回一个列表。可以看出,links适用适用于browser对象以及elements

点击链接(Clicking links)

 点击链接可以按照href、部分href、文本或部分文本的方式。例如:
有个html元素:

<a href="https://www.baidu.com" id="111">Links</a>

 可以通过以下几种方式点击该链接,注意如果要点击某个连接,需需要能够完全匹配到,因为Splinter中click_*方法默认单击的是第一个匹配的link

browser.click_link_by_href('https://www.baidu.com')       # 通过全部匹配href的方式
browser.click_link_by_partial_href('https://www.baidu')   # 通过部分匹配href的方式
browser.click_link_by_text('Links')                       # 通过全部匹配Text的方式
browser.click_link_by_partial_text('Link')                # 通过部分匹配Text的方式
browser.click_link_by_id('111')                           # 通过id的方式

 以上四种方法,调用后会直接跳转到对应的href。

  默认选中的是第一个匹配的href。
  默认选中的是第一个匹配的href。
  默认选中的是第一个匹配的href。

Finding links和Clicking links二者区别

find_*系列函数均返回一个列表,表示满足条件的元素(不会单击并跳转)。而click_*方法是找到第一个元素并单击它。举个例子,有个html页面中有两个a标签:

<a href="https://www.baidu.com" id="111">Link</a>
<a href="https://www.baidu.com" id="222">Link1</a>

 以*_by_href系列函数为例,find_by_href

ellist = browser.links.find_by_href('https://www.baidu.com')  # 则会返回一个列表,其中包含两个元素
# 如果要单击某个元素可以将其取出来,并调用click(),例如:
ellist.first.click()         # 单击第一个
ellist.last.click()          # 单击最后一个

 而对于click_link_by_href

browser.click_link_by_href('https://www.baidu.com')       
# 通过全部匹配href的方式并直接单击跳转,仅匹配第一个,其结果相当于:
browser.links.find_by_href('https://www.baidu.com').first.click()  # 单击第一个

 对于其他几种方法同理,官方推荐find_*系列方法,毕竟使用click_*会有局限性,例如:无法单击第二个及以后的link

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cuntou0906

玛莎拉蒂是我的目标!

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

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

打赏作者

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

抵扣说明:

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

余额充值