我正在尝试编写一个自动化测试,以自动执行更新Google chrome扩展程序的过程。我不知道自动执行此操作的另一种方法,所以这是我当前正在尝试执行的操作:
这是我尝试打开chrome扩展页面的尝试:
IwebElement UpdateButton = driver.findelement(By.Id("update-extensions-now"));
UpdateButton.Click();
由于某种原因,按钮单击未注册。我尝试了其他一些定位器,例如CSS路径和Xpath,但它们也不起作用。另外,当我调试该测试时,它可以通过,因此我知道这对我的任何定位器都不是问题。我(作为测试)试图自动点击此页面上的其他元素,这是同样的问题。我根本无法处理chrome://extensions页面上的任何元素。
有没有人遇到过这种情况或对发生的事情有任何想法?
最佳答案
您可以使用Chrome扩展程序API自动更新所需的扩展程序。
在默认的Google Chrome浏览器中找到文件“manifest.json”
C:\Users\*UserName*\AppData\Local\Google\Chrome\User Data\Default\Extensions
在这里找到您的扩展程序的更新URL:
{
"name": "My extension",
...
"update_url": "http://myhost.com/mytestextension/updates.xml",
...
}
Google服务器返回的XML如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='yourAppID'>
<updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
appid
扩展名或应用程序ID,基于“打包”中的描述基于公钥的哈希值生成。您可以转到扩展程序页面(chrome://extensions)查找扩展程序或Chrome应用的ID。
代码库
.crx文件的URL。
版本
客户端用于确定是否应下载代码库指定的.crx文件。它应与.crx文件的manifest.json文件中的“version”值匹配。
更新 list XML文件可以通过包含多个元素来包含有关多个扩展名的信息。
另一个选项是使用 --extensions-update-frequency 命令行标志来设置更频繁的间隔(以秒为单位)。例如,要使检查每45秒运行一次,请像下面这样运行Google Chrome:
chrome.exe --extensions-update-frequency=45
请注意,这会影响对所有已安装的扩展程序和应用程序的检查,因此请考虑其对带宽和服务器负载的影响。您可能希望暂时卸载除测试用的设备以外的所有设备,并且不应在正常使用浏览器时启用此选项的情况下运行。
更新每个扩展的请求将是:
http://test.com/extension_updates.php?x=id%3DyourAppID%26v%3D1.1
您可以在exntesions开发人员网站上找到更详细的信息:https://developer.chrome.com/extensions