如何操作同名或类似标题的页面

应用场景

小伙伴们是不是遇到以下困扰呢?

  • 网页长得像一对孪生兄弟,不仅仅是网页名称,还有链接都是一样的。

  • 网页的url前面是完全一样的,只有后面数值有差异,去掉数值又会捕获到其他网页。

  • 不知道已经打开的网页是什么?跳转的网页是不是预期的。

  • 需要知道打开的所有网页,每一个打开网页的url,title。

  • 当前激活的页面是不是预期的。

  • 网页的title和url都是变化的,无法使用固定参数捕获页面。

SDK介绍

基于以上的困扰,阿里云RPA的工程师们在3.4.5版本中新增了7个SDK,其中chrome有四个,IE有三个。

Chorme

  • catch_specified_pages(name, *, mode='title', pattern='contain')

  • catch_all_pages()

  • catch_activated_pages()

  • close_all

IE

  • catch_specified_pages(name, *, mode='title', pattern='contain')

  • catch_all_pages()

  • close_all

操作前提

  • 存在已经打开了百度网页、淘宝、没有名称的标签页。如下图:

image.png

使用方法

Chrome

catch_specified_pages

捕获满足条件的所有页面

  • name:标题或者url 

    # 网页的名称或者连接

  • mode: 'title'|'url' 

    # 指前一个参数name的类型是title或者url

  • pattern: 'equal'|'contain'|'regular'

    # 匹配方式,完全相等/包含/正则

page_list = rpa.app.chrome.catch_specified_pages("百度一下", mode="title",pattern="equal")
# page_list为Browser对象的列表
if page_list:
    for i in page_list:
        print(i.title())
# 标题-包含匹配
page_list = rpa.app.chrome.catch_specified_pages("百度一下", mode="title",pattern="contain")
# 标题-正则匹配
page_list = rpa.app.chrome.catch_specified_pages(".*", mode="title",pattern="regular")
# url-完全匹配
page_list = rpa.app.chrome.catch_specified_pages("baidu", mode="url",pattern="equal")
# url-包含匹配
page_list = rpa.app.chrome.catch_specified_pages("baidu", mode="url",pattern="contain")
# url-正则匹配
page_list = rpa.app.chrome.catch_specified_pages(".*m/$", mode="url",pattern="regular")

catch_all_pages

返回满足条件的所有页面,返回Browser对象的列表。这里无论是机器人创建的还是人工创建的,统统都捕获到了哦~

page_list = rpa.app.chrome.catch_all_pages()
if page_list:
    for i in page_list:
        print(i.title())

catch_activated_pages

返回所有激活的页面显示激活的页面是指如上图,显示在当前页面上的页面,所以百度网页为激活页面啦!!!

page_list = rpa.app.chrome.catch_activated_pages()
if page_list:
    for i in page_list:
        print(i.title())

close_all

关闭所有的页面顾名思义,可以关闭已打开的所有网页!!!

# 关闭所有的页面 
rpa.app.chrome.close_all()

IE

catch_specified_pages

捕获满足条件的所有页面

  • name:标题或者url 

    # 网页的名称或者连接

  • mode: 'title'|'url' 

    # 指前一个参数name的类型是title或者url

  • pattern: 'equal'|'contain'|'regular' 

    # 匹配方式,完全相等/包含/正则

page_list = rpa.app.ie.catch_specified_pages("百度一下,你就知道", mode="title",pattern="equal")
if page_list:
    for i in page_list:
        print("ie-标题-完全匹配", i.title())

# 标题-包含匹配
page_list = rpa.app.ie.catch_specified_pages("百度一下", mode="title",pattern="contain")
# 标题-正则匹配
page_list = rpa.app.ie.catch_specified_pages(".*", mode="title",pattern="regular")
# url-完全匹配
page_list = rpa.app.ie.catch_specified_pages("baidu", mode="url",pattern="equal")
# url-包含匹配
page_list = rpa.app.ie.catch_specified_pages("baidu", mode="url",pattern="contain")
# url-正则匹配
page_list = rpa.app.ie.catch_specified_pages(".*m/$", mode="url",pattern="regular")

catch_activated_pages

返回所有激活的页面显示激活的页面是指如上图,显示在当前页面上的页面,所以百度网页为激活页面啦!!!

page_list = rpa.app.ie.catch_all_pages()
if page_list:
    for i in page_list:
        print(i.title())

举个例子!!创建两个相同百度网页,在第一个网页的百度输入框中输入0,第二个网页的百度输入框中输入1.

page_list = rpa.app.chrome.catch_all_pages()
if page_list:
    for i in range(len(page_list)):
        print(i)
        page = page_list[i]
        page.input_text("百度输入框",str(i))        # 这里别忘记录制百度输入框控件哦~

close_all

关闭所有的页面同chrome操作一样,一样用来关闭已打开的所有网页!!!

# 关闭所有的页面 
rpa.app.ie.close_all()

好啦,以上就是7个SDK的使用方法啦,小伙伴们在开发过程中遇到类似困难可要记得使用哦~~