全部产品
云市场
云游戏

16.同名或类似标题的页面操作方法

更新时间:2020-05-21 10:54:54

应用场景

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

  • 网页长得像一对孪生兄弟,不仅仅是网页名称,还有链接都是一样的。
  • 网页的url前面是完全一样的,只有后面数值有差异,去掉数值又会catch到其他网页。
  • 不知道已经打开的网页是什么?跳转的网页是不是预期的。
  • 需要知道打开的所有网页,每一个打开网页的url,title。
  • 当前激活的页面是不是预期的。
  • 网页的title和url都是变化的,无法使用固定参数catch页面。

SDK介绍

基于以上的困扰,阿里云RPA的攻城狮们在3.4.5版本中新增了5个SDK,其中chrome有三个,IE有两个,他们的API文档链接是IEChrome
就是下面这5个哦。

IE

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

    Chorme

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

  • catch_all_pages()
  • catch_activated_pages()

操作前提

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

image.png

使用方法

Chrome

catch_specified_pages


捕获满足条件的所有页面

  • name: 标题或者url # 网页的名称或者连接
  • mode : ‘title’|’url’ # 指前一个参数name的类型是title或者url
  • pattern : ‘equal’|’contain’|’regular’ # 匹配方式,完全相等/包含/正则
  1. page_list = rpa.chrome.catch_specified_pages("百度一下", mode="title",pattern="equal")
  2. # page_list为Browser对象的列表
  3. if page_list:
  4. for i in page_list:
  5. print(i.title())
  6. # 标题-包含匹配
  7. page_list = rpa.chrome.catch_specified_pages("百度一下", mode="title",pattern="contain")
  8. # 标题-正则匹配
  9. page_list = rpa.chrome.catch_specified_pages(".*", mode="title",pattern="regular")
  10. # url-完全匹配
  11. page_list = rpa.chrome.catch_specified_pages("baidu", mode="url",pattern="equal")
  12. # url-包含匹配
  13. page_list = rpa.chrome.catch_specified_pages("baidu", mode="url",pattern="contain")
  14. # url-正则匹配
  15. page_list = rpa.chrome.catch_specified_pages(".*m/$", mode="url",pattern="regular")

catch_all_pages


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

  1. page_list = rpa.chrome.catch_all_pages()
  2. if page_list:
  3. for i in page_list:
  4. print(i.title())

catch_activated_pages

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

  1. page_list = rpa.chrome.catch_activated_pages()
  2. if page_list:
  3. for i in page_list:
  4. print(i.title())

IE

catch_specified_pages


捕获满足条件的所有页面

  • name: 标题或者url # 网页的名称或者连接
  • mode : ‘title’|’url’ # 指前一个参数name的类型是title或者url
  • pattern : ‘equal’|’contain’|’regular’ # 匹配方式,完全相等/包含/正则
  1. page_list = rpa.ie.catch_specified_pages("百度一下,你就知道", mode="title",pattern="equal")
  2. if page_list:
  3. for i in page_list:
  4. print("ie-标题-完全匹配", i.title())
  5. # 标题-包含匹配
  6. page_list = rpa.ie.catch_specified_pages("百度一下", mode="title",pattern="contain")
  7. # 标题-正则匹配
  8. page_list = rpa.ie.catch_specified_pages(".*", mode="title",pattern="regular")
  9. # url-完全匹配
  10. page_list = rpa.ie.catch_specified_pages("baidu", mode="url",pattern="equal")
  11. # url-包含匹配
  12. page_list = rpa.ie.catch_specified_pages("baidu", mode="url",pattern="contain")
  13. # url-正则匹配
  14. page_list = rpa.ie.catch_specified_pages(".*m/$", mode="url",pattern="regular")

catch_activated_pages

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

  1. page_list = rpa.ie.catch_all_pages()
  2. if page_list:
  3. for i in page_list:
  4. print(i.title())

举个栗子!!
创建两个相同百度网页,第一个网页输入1,第二个网页输入2.

  1. def start6():
  2. page_list = rpa.chrome.catch_all_pages()
  3. if page_list:
  4. for i in range(len(page_list)):
  5. print(i)
  6. page = page_list[i]
  7. page.input("百度输入框",str(i)) # 这里别忘记录制百度输入框控件哦~

运行视频如下:

Video_2019-12-19_170444.wmv (1.38MB)好啦,以上就是5个SDK的使用方法啦,小伙伴们在开发过程中遇到类似困难可要记得使用哦~~