isrpa7.0 的 IE 自动 pagedown 到我们需要操作的地方
在 IE 中,对很长的页面来说,一直有一个问题是,我们要操作的按钮可能不可见,这时候会操作错误
为了滚动到我们按钮可见,大家往往要循环按 pagedown 并尝试操作、检测操作是否成功,我们在这里利用 isrpa7.0 的一个 run_javascript 函数,来实现这个功能
首先,7.0 提供的 iie.run_javascript 有一个 bug,必须手工修复一下,打开C:\...\plugin\Com.Isearch.Func.Python\Lib\ubpa\iie.py
,找到下面的函数并替换成下面的内容:
def get_param(title="",url="",selector="",text="",item="",itemmode="",action="", js="", pid=0):
param = '{"activite":"","input":{"item":"","itemmode":"","text":"","action":""},"target":{"selector":"","title":"","url":""}}'
pjson = json.loads(param)
if selector != "":
pjson["target"]["selector"] = selector
if title != "":
pjson["target"]["title"] = title
if url != "":
pjson["target"]["url"] = url
if text != "":
pjson["input"]["text"] = text # 是否所选文本、设置文本,是否所选顺序,键盘输入
if item != "":
pjson["input"]["item"] = item #下拉选择
if itemmode != "":
pjson["input"]["itemmode"] = itemmode # 下拉选择
if action != "":
pjson["input"]["action"] = action #多选框设置
if js != "":
pjson["target"]["jscode"] = js
if pid != 0:
pjson["target"]["pid"] = pid #多选框设置
return json.dumps(pjson, ensure_ascii=False)
然后在设计器中,使用义代码块:
import ubpa.iie as iie
iie.run_javascript(url=r'https://www.baidu.com/s?wd=i-search', js=r'var elmnt =document.getElementById("rs");elmnt.scrollIntoView();')
这里面,关键的是这句 js:
var elmnt =document.getElementById("rs");
elmnt.scrollIntoView();
这个 rs 相当于页面里面的id="rs"
,相当于我们查找路径的#rs
,大家可以用var x = document.getElementsByClassName("intro");
或者其他类似的 java scripts 来定位自己需要元素,注意 getElements 和 getElement 得到的对象是不同的。这里面需要很多 java scripts 的知识,我也不是太懂,都是请教百度这位好老师的。
在 8.0 版本,我们会内置此功能,操作元素前,先尝试将它移动到可视界面里
另外 8.0 也支持消息模式(无需可视,注意,有些 js 限制必须可视才能点击,因此,不推荐该方法)