使用 webdriver 操作chrome 浏览器自动化测试的时候close关闭浏览器很慢
关闭页面使用的driver.close()
查过资料 得知driver.close()指的是仅关闭页面
如果要退出浏览器则应该使用 driver.quit() 方法,不但会关闭所有页面,还会释放webdriver资源
关闭页面使用的driver.close()
查过资料 得知driver.close()指的是仅关闭页面
如果要退出浏览器则应该使用 driver.quit() 方法,不但会关闭所有页面,还会释放webdriver资源
创建webdriver chrome 实例
$options = [
'--no-sandbox', // 解决DevToolsActivePort文件不存在的报错
'window-size=1400,1000', // 指定浏览器分辨率
// '--disable-gpu', // 谷歌文档提到需要加上这个属性来规避bug
// '--hide-scrollbars', // 隐藏滚动条, 应对一些特殊页面
// 'blink-settings=imagesEnabled=false', // 不加载图片, 提升速度
'--ignore-certificate-errors',
'--ignore-ssl-errors',
'--unlimited-storage', //存储权限
//'--headless', // 浏览器不提供可视化页面
];
$capabilitiesOptions = array_merge([
WebDriverCapabilityType::BROWSER_NAME => WebDriverBrowserType::CHROME,
WebDriverCapabilityType::PLATFORM => WebDriverPlatform::ANY,
], $capabilitiesOptions);
$capabilities = new DesiredCapabilities($capabilitiesOptions);
$host = 'http://127.0.0.1:9151'; //chrome服务器地址
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments($options);
// $options->setExperimentalOption('useAutomationExtension',false);
$chromeOptions->setExperimentalOption('excludeSwitches', ['enable-automation', 'enable-logging']);
//处理权限弹窗
$prefs = [
'profile.default_content_setting_values' => [
'clipboard' => 1,
'notifications' => 2,
]
];
$chromeOptions->setExperimentalOption('prefs', $prefs);
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
$driver = RemoteWebDriver::create($host, $capabilities);剪贴板通知桌面通知权限弹窗处理
$prefs = [
'profile.default_content_setting_values' => [
'clipboard' => 1,
'notifications' => 2,
]
];
$chromeOptions->setExperimentalOption('prefs', $prefs);alert, confirm, prompt 弹窗
1、Selenium中的WebDriver对象提供了switch_to_alert()方法定位(捕获)到各种弹窗(alert、confirm、prompt)
2、WebDriver对象在处理弹框时主要有以下几种方法:
⑴ switch_to_alert():定位弹出的对话框
⑵ text:获取对话框文本值
⑶ accept():相当于点击"确认"
⑷ dismiss():相当于点击"取消"
⑸ send_keys():输入值,该方法只能在prompt类弹框中使用
//点确定按钮
$driver->switchTo()->alert()->accept() 转自:https://gist.github.com/lzqwebsoft/6458377
Prism是一个只有1.5KB大小的压缩版轻量级工具,能够简单方便的整合到CSS和JavaScript文件里,运行速度很快。已经使用在Dabblet里(一个交互式的CSS场地)美化了很多代码,所以说Prism很稳定。新的编程语言也可以加入进来,在使用这个插件架构的前提下,新加入的语言功能性将不断提升;外观风格和使用感觉都可以通过CSS来设计。
2. Rainbows
Rainbow是一款用JavaScript脚本编写的只有1.4KB的轻量级工具。它只需要在有必要高亮显示的语言上使用JavaScript模型来保持事情简单化就可以了。同样,颜色和字体可以通过CSS主题支持来完全自定义。
3. Snippet
Snippet是一个jQuery插件,建立在SHJS脚本的顶部以此来高亮显示HTML文件里的源代码。它支持很多种类的脚本语言:JavaScript、SQL、PHP和Ruby等等。其包含39个内置的独一无二的配色图案,可以不断的变换调试。
4. Geshi
这是一个高度自定义的语法高亮显示工具,可以在网页里用来更好的展示代码片段。Geshi经过开发后来应用在phpBB论坛软件上,但在功能特性上仍然是分开使用的。此外,这个语法高亮工具支持几乎所有的流行编程语言,像ActionScript、ASP、C、JAVA、PHP、Ruby和SQL等等。
5. Syntax Highlighter
Syntax Highlighter帮助一个开发者/码农轻松在线公布代码片段,而且代码的外观看上去也很不错。说白了,它就是一个100%建立在JavaScript基础上的高亮显示工具,不用考虑服务器上有什么其他东西。支持多款编程语言,压缩后的核心库只有11KB大小。然而,Syntax Highlighter并不具备编写高亮代码的能力,也不为用户提供编写源代码的能力。
6. Google Code Prettify
这是在Google Code网站使用的脚本。这个脚本能够自动查出正在使用的编程语言,进行相应的美化。同时也可以通过CSS来自定义。
7. Hightlight.js
Hightlight.js基本上不需要采用复杂的步骤就可以使用了,因为它的自动化程度很高:找出代码块,检测语言,高亮显示一下就行了。它已经开始支持第三方应用程序,并提供Firefox扩展程序用于查看代码,但是没有语法高亮显示。
8. SHJS:Syntax Highlighting in JavaScript
SHJS是一个JavaScript程序,它可以高亮显示在HTML文档里的源代码段落。文件使用SHJS将会通过web浏览器高亮显示在客户端。这就赋予了SHJS一项功能,那就是能够高亮显示源代码是使用不同的语言编写的。
9. Quick Highlighter
这个在线高亮工具提供许多编码语言,你可以选择多个选项将这些编码语言集体高亮显示。在高亮显示代码、Combine Style、HTML Code、Highlight内置关键词、数据类型、Strict Mode和Wrap过剩文本之前你可以选择检查或者不检查代码。
10. Ultraviolet
Ultraviolet是一个运行在Ruby上的语法高亮引擎,支持50种以上的编程语言和20种以上的主题。
11. Pygments:Python Syntax Highlighter
这款语法高亮工具是用Python构建的,支持大部分的编程语言、多种输出格式,它还可以被当作是一个命令行工具或者是一个类库来使用。
12. Lighter for MooTools
Lighter是一个免费的语法高亮工具,专门为MooTools而开发的。MooTools开发者在创建Lighter之初运用了许多框架结构上的功能特点。它运用起来就像是在网页上添加一个单独的脚本那样简单,选择你想要高亮显示的元素,Lighter会自动处理其余部分。
13. CodePress
CodePress是一个基于网络的源代码编辑器,带有用JavaScript编写的语法高亮工具,随着在浏览器里连续打字,文本的颜色会实时发生变化。除此以外,它还有代码片段、自动完成、快捷方式和多窗口功能。
14. Beauty of Code
这个jQuery语法高亮插件使用的是Alex Gorbatchev里的语法高亮显示,但有一点不一样:它能够产生更多的xhtml兼容的代码。
15. Jush JavaScript Syntax Highlighter
JavaScript Syntax Highlighter可以用在客户端的语法高亮程序里,支持的语言有HTML、CSS、JavaScript、PHP、SQL、HTTP、SMTP协议、php.ini和Apache配置。
转自阿里云社区文章:https://developer.aliyun.com/article/802318
使用场景
本地网络联机游戏
远程桌面
程序远程调试
远程文件传输等
前情提要
Zerotier作为一款开源异地虚拟局域网构建工具,已经被广泛关注和应用,相比蒲公英、花生壳等工具,zerotier免费、可加入节点多,数据传输安全,但有时两台都在内网的主机打通udp隧道较为困难,而且通常延迟较高,好在官网提供了解决方案,即使用一台接入公网的主机作为MOON节点,用于初始化打通两节点之间的隧道,使延迟可以从几百ms降至十几ms,故我选择了阿里云2核2g内存的ecs作为moon节点,十分有效。
ecs/MOON端
出于个人习惯,我选择ubuntu20.04作为操作系统
1.下载Zerotier
参考官网指南
curl -s https://install.zerotier.com | sudo bash2.启动zerotier服务
service zerotier-one start3.加入zerotier网络
zerotier-cli join <your_network_id>之后在web端控制台允许此节点接入网络
4.生成MOON节点
首先进入zerotier目录“/var/lib/zerotier-one”
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public >> moon.json然后修改moon.json
{
..
{
..
”stableEndpoints”:[]
}
..
}添加ECS的公网ip地址
{
..
{
..
”stableEndpoints”:[“<your_ip_addr>/9993”]
}
..
}保存并退出
5.生成签名文件
Zerotier-idtool genmoon moon.json命令执行后,当前目录生成一个名为000000xxxxxxxxxx.moon的文件
其他主机/PLANET端
6.配置moon
将签名文件放在当前目录的子目录“moons.d”(首次需要新建目录)下,并拷贝该签名文件至所有需要配置moon节点的主机中,对于windows系统的节点,找到该路径“C://ProgramData/Zerotier/One/”,在此目录下新建moons.d文件夹,并放入签名文件。最后重启zerotier服务
Service zerotier-one restart7.测试效果
使用命令:
Zerotier-cli peers查看各节点状态(windows系统下zerotier-cli位于“C://Program Files(x86)/ZeroTier/One/”下),
出现为“MOON”的节点则配置成功,如果MOON节点对应为“—1–”,等待一段时间即可自动修改为ecs公网ip地址,可以通过分别ping moon节点的公网地址和虚拟局域网内网地址对比延迟来确定是否打通局域网。
最近在使用群晖 NAS 自带的 Docker 应用时,总是出现容器无法停止的情况,即使在命令行中使用 docker stop 也无济于事。
想再去控制台重启 Docker 应用,又发现 Document Viewer 应用依赖到 Docker 应用,无法单独重启 Docker ,必须先停掉 DocViwer 容器。
完蛋,这就进入死循环了……
由于群晖 NAS 系统是定制的,所以一般的 Linux 操作方式在群晖 NAS 的 shell 上是没用的。所以只能找相关的 Docker 服务重启脚本。
通过全局搜索,我找到了 /var/packages/Docker/scripts/start-stop-status 这个脚本。嗯,看起来应该是它没差了。
通过对脚本的查看,确认了可以重启 Docker 服务后,便执行对应的操作进行重启:
bash /var/packages/Docker/scripts/start-stop-status stop;
bash /var/packages/Docker/scripts/start-stop-status start;
重启完成后,Docker 服务果然恢复,能正常停止容器了。
转载自:https://huangzz.xyz/qun-hui-nas-shou-dong-chong-qi-docker-fu-wu.html