RF 指定谷歌浏览器用户目录不能生效该怎么解决

RF提问Hurts 回复了问题 • 2 人关注 • 1 个回复 • 280 次浏览 • 17 小时前 • 来自相关话题

Nginx+SeleniumGrid,让你本地能够直接用云上的浏览器

RF技能分享Hurts 发表了文章 • 2 个评论 • 73 次浏览 • 18 小时前 • 来自相关话题

本文中用到的Nginx和Grid都是在docker中直接构建。
 
镜像:nginx:latest和selenium/standalone-chrome-debug:3.8.1-francium
 
首先,为什么要在云上的搭浏览器,这个就不详细说明了,需要用到的人自然知道它的便利和好处。
 
公司有好几台云机器,有时候不在公司的时候,想到要直接调用公司云机器上的Grid,用里面的浏览器,就省去了本地要装浏览器的烦恼,只要基础的RF环境就行。可是,现实总是残酷的,通过本地的机器调用云上的Hub,经常会“掉线”,可以说没有不掉线的情况发生,开始很郁闷,明明IP啥的都是没问题的,在本地的Hub也是这样调用,http://x.x.x.x:4444/wd/hub,从来没有发生过掉线的情况,而且http://x.x.x.x:4444/gird/console也可以正常访问。这里说一下掉线的具体表现,就是有时候第一个指令会发送到云上的机器,浏览器被成功打开,到后面一个指令就会毫无反应,要不然就是浏览器都会打不开。
刚开始还以为是RF的原因,然后还用python原生调用selenium试了试,一样的结果,google各种找,都找不到原因。但是有天在调试iOS自动化的时候,在盯着appium的日志看,看到了前面都是POST,DELETE啥的,这时候才想起来,Grid也是一样!思来想去,前面说道的“掉线”,基板上就是请求发送出去,然后回不来了,也就是找不到回来的路了。这时候首先想到的是找一个中间件,做一个端口转发试试,因为对Nginx有些许了解,而且配置也简单,所以就用了,其实httpd,tomcat等只要是中间件都可以用。
在Nginx镜像中的conf.d下新建一个.conf,配置很简单,如下:server {
listen 80;
server_name x.x.x.x;

location /{
proxy_pass http://x.x.x.x:4444/;
}
}




server_name后面就是云ip
proxy_pass后面就是需要转发的ip+端口
这样配置之后就等于把你的80端口的数据先由Nginx处理,然后全部转发到4444端口再转发回80端口。
记得在脚本中,Hub地址要改成http://x.x.x.x/wd/hub,等于就是以前的4444端口变成了80端口。
 
果然,这样之后,本地可以毫无障碍的用云上的SeleniumGrid了!
当然,如果怕别人用你的云浏览器,你可以在Nginx加上相关配置,可以配置基础验证等。 查看全部
本文中用到的Nginx和Grid都是在docker中直接构建。
 
镜像:nginx:latest和selenium/standalone-chrome-debug:3.8.1-francium
 
首先,为什么要在云上的搭浏览器,这个就不详细说明了,需要用到的人自然知道它的便利和好处。
 
公司有好几台云机器,有时候不在公司的时候,想到要直接调用公司云机器上的Grid,用里面的浏览器,就省去了本地要装浏览器的烦恼,只要基础的RF环境就行。可是,现实总是残酷的,通过本地的机器调用云上的Hub,经常会“掉线”,可以说没有不掉线的情况发生,开始很郁闷,明明IP啥的都是没问题的,在本地的Hub也是这样调用,http://x.x.x.x:4444/wd/hub,从来没有发生过掉线的情况,而且http://x.x.x.x:4444/gird/console也可以正常访问。这里说一下掉线的具体表现,就是有时候第一个指令会发送到云上的机器,浏览器被成功打开,到后面一个指令就会毫无反应,要不然就是浏览器都会打不开。
刚开始还以为是RF的原因,然后还用python原生调用selenium试了试,一样的结果,google各种找,都找不到原因。但是有天在调试iOS自动化的时候,在盯着appium的日志看,看到了前面都是POST,DELETE啥的,这时候才想起来,Grid也是一样!思来想去,前面说道的“掉线”,基板上就是请求发送出去,然后回不来了,也就是找不到回来的路了。这时候首先想到的是找一个中间件,做一个端口转发试试,因为对Nginx有些许了解,而且配置也简单,所以就用了,其实httpd,tomcat等只要是中间件都可以用。
在Nginx镜像中的conf.d下新建一个.conf,配置很简单,如下:
server {
listen 80;
server_name x.x.x.x;

location /{
proxy_pass http://x.x.x.x:4444/;
}
}




server_name后面就是云ip
proxy_pass后面就是需要转发的ip+端口
这样配置之后就等于把你的80端口的数据先由Nginx处理,然后全部转发到4444端口再转发回80端口。
记得在脚本中,Hub地址要改成http://x.x.x.x/wd/hub,等于就是以前的4444端口变成了80端口。
 
果然,这样之后,本地可以毫无障碍的用云上的SeleniumGrid了!
当然,如果怕别人用你的云浏览器,你可以在Nginx加上相关配置,可以配置基础验证等。

从网页中取到了字典值 如何修改字典某个key的value

RF提问小七111 回复了问题 • 2 人关注 • 1 个回复 • 12 次浏览 • 18 小时前 • 来自相关话题

引入自定义库遇到的坑

RF技能分享teo 发表了文章 • 1 个评论 • 24 次浏览 • 1 天前 • 来自相关话题

刚配置rf好环境,ride运行一个case报错了,求大神解答

RF提问sz6055246 回复了问题 • 9 人关注 • 8 个回复 • 4619 次浏览 • 2 天前 • 来自相关话题

大佬们 multipart/form-data post 请求一直是返回的code是400,是什么原因

回复

RF提问test001 发起了问题 • 1 人关注 • 0 个回复 • 44 次浏览 • 6 天前 • 来自相关话题

重装系统后,再次安装,RIDE中导入AutoItLibrary报错

RF提问b8859685 回复了问题 • 3 人关注 • 2 个回复 • 7820 次浏览 • 6 天前 • 来自相关话题

用python搞了一个录制屏幕的脚本,怎么在后台运行?

回复

RF提问mmwban 回复了问题 • 1 人关注 • 1 个回复 • 71 次浏览 • 6 天前 • 来自相关话题

用ie浏览器,close window 后总提示是否确认关闭该窗口,但总是识别不到这个提示,怎么办

RF提问mmwban 回复了问题 • 2 人关注 • 2 个回复 • 88 次浏览 • 2018-07-13 00:16 • 来自相关话题

如何用正则提取返回码中的某段值

RF提问Sahara 回复了问题 • 2 人关注 • 1 个回复 • 76 次浏览 • 2018-07-12 14:19 • 来自相关话题