当前位置: 首页 > 工具软件 > Splinter > 使用案例 >

Splinter入门(六) links的API

佟嘉祯
2023-12-01

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

 类似资料: