全部产品

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

应用场景

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

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

SDK介绍

基于以上的困扰,阿里云RPA的攻城狮们在3.4.5版本中新增了5个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’ # 匹配方式,完全相等/包含/正则
  1. page_list = rpa.app.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.app.chrome.catch_specified_pages("百度一下", mode="title",pattern="contain")
  8. # 标题-正则匹配
  9. page_list = rpa.app.chrome.catch_specified_pages(".*", mode="title",pattern="regular")
  10. # url-完全匹配
  11. page_list = rpa.app.chrome.catch_specified_pages("baidu", mode="url",pattern="equal")
  12. # url-包含匹配
  13. page_list = rpa.app.chrome.catch_specified_pages("baidu", mode="url",pattern="contain")
  14. # url-正则匹配
  15. page_list = rpa.app.chrome.catch_specified_pages(".*m/$", mode="url",pattern="regular")

catch_all_pages

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

  1. page_list = rpa.app.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.app.chrome.catch_activated_pages()
  2. if page_list:
  3. for i in page_list:
  4. print(i.title())

close_all

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

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

IE

catch_specified_pages

捕获满足条件的所有页面

  • name: 标题或者url # 网页的名称或者连接
  • mode : ‘title’|’url’ # 指前一个参数name的类型是title或者url
  • pattern : ‘equal’|’contain’|’regular’ # 匹配方式,完全相等/包含/正则
  1. page_list = rpa.app.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.app.ie.catch_specified_pages("百度一下", mode="title",pattern="contain")
  7. # 标题-正则匹配
  8. page_list = rpa.app.ie.catch_specified_pages(".*", mode="title",pattern="regular")
  9. # url-完全匹配
  10. page_list = rpa.app.ie.catch_specified_pages("baidu", mode="url",pattern="equal")
  11. # url-包含匹配
  12. page_list = rpa.app.ie.catch_specified_pages("baidu", mode="url",pattern="contain")
  13. # url-正则匹配
  14. page_list = rpa.app.ie.catch_specified_pages(".*m/$", mode="url",pattern="regular")

catch_activated_pages

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

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

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

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

close_all

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

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

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