我正在尝试编写一个自动化测试,该自动化测试将自动执行更新Google chrome扩展程序的过程。我不知道自动执行此操作的另一种方法,因此这是我当前正在尝试执行的操作:
打开chrome扩展程序页面(据我所知,除非我缺少某些内容,否则这只是一个html页面)。
点击“更新扩展名”按钮
这是我尝试打开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”值匹配。
更新清单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