我在ruby的电脑上有这个:
require 'watir-webdriver' Before do @browser = Watir::browser.new :ie end
我需要更改@browser以更高的优先级运行,因为在其他程序同时运行时,会导致出现问题。 我知道如何增加超时时间,但经过一些testing后,我发现我必须把时间设定得高于我认为可以接受的时间。
XP,Vista,Win7的IE8行为差异?
Chrome中的协议处理程序通过registry
为什么我无法在浏览器中运行空白的Cordova应用程序:您可能没有所需的环境或操作系统来运行此项目
Kibana卡在加载屏幕
将非SNI浏览器redirect到Nginx中仅HTTP的警告页面
我发现你实际上可以在@browser对象的内部找到webdriven浏览器的PID(读取所有受保护的和私有的组件),然后用一个负数来renice它以增加优先级,这可能需要sudo被非允许 – 根用户。
我已经探索出口这个对象到一个ASCII形式的存储,实际上工作,虽然导入它是另一个问题的主题。 试试这个(每次我的代码启动一个新的Watir::browser时,我都会这么做):
require "yaml" File.open("browserObj.yaml",'w').write YAML::dump($browser)
然后当你浏览这个文件browserObj.yaml ,它会给你各种有趣的信息,如:
server_url: !ruby/object:URI::HTTP fragment: host: 127.0.0.1 opaque: parser: password: path: /hub/ port: 7055 query: registry: scheme: http user: timeout: launcher: !ruby/object:seleniumium::WebDriver::Firefox::Launcher binary: !ruby/object:seleniumium::WebDriver::Firefox::Binary process: !ruby/object:ChildProcess::Unix::ForkExecProcess args: - ./firefox.sh - -no-remote - -foreground detach: false duplex: false environment: {} exit_code: io: pid: 6114 started: true
注意第二行的PID,你的代码可以很容易地检测到,并在这一点上做任何事情。
这比用例如分析层次化进程树更安全。 pstree -panu $PPID来查找子浏览器进程。
在我自己的东西,我实际上不打扰(例如,当我需要杀死正确的Firefox进程,而不是其他人),因为我去的显示。 所有我的桌面/交互式用户的东西发生在disPLAY:0,而我的Watir Webdriver的东西发生在disPLAY:99由Xvfb或Xephyr托管,我可以更有选择地kill / xkill工具,如xprop和xwininfo的帮助。
编辑为了完整起见,下面是我用来发送kill命令给watir-webdriver浏览器的pid的Unix / Cygwin命令,如果我需要的话:
awk '/pid:/ {print $2;}' browserObj.yaml |xargs -rt kill
浏览文档和代码我没有看到任何准备好的方式来查找驱动程序使用的IE的进程ID。 您可以尝试使用系统工具来发现在Web驱动程序端口上侦听的进程(默认为5555)并禁止该进程。 在POSIX上,您可以尝试使用lsof或netstat来查找使用特定端口的进程,我不知道如何在Windows上帮助您。
当然,如果这是一个资源竞争的问题,为什么不给你的watir测试一个更好的控制环境,没有其他的东西阻止它以你想要的速度运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。