Ban*_*axx 5 selenium webdriver selenium-chromedriver selenium-webdriver
我正在尝试编写一个自动化测试,它将自动更新Google Chrome扩展程序.我不知道另一种自动执行此操作的方法,所以这是我目前正在尝试做的事情:
打开chrome扩展页面(据我所知,这只是一个html页面,除非我遗漏了什么).
单击"更新扩展"按钮
以下是我尝试打开Chrome扩展程序页面的内容:
IwebElement UpdateButton = driver.findelement(By.Id("update-extensions-now"));
UpdateButton.Click();
Run Code Online (Sandbox Code Playgroud)
由于某种原因,按钮单击未注册.我尝试了一些其他定位器,如CSS路径和Xpath,但它们也不起作用.此外,当我调试此测试时,它通过正常,所以我知道这不是我的任何定位器的问题.我(作为测试)尝试自动点击此页面上的其他元素,这是同样的问题.我无法处理chrome://扩展页面上的任何元素.
有没有人遇到这个或有任何想法发生了什么?
小智 1
您可以使用 Chrome 扩展 API 自动更新所需的扩展。在默认的 Google Chrome 中找到文件“manifest.json”
C:\Users\*UserName*\AppData\Local\Google\Chrome\User Data\Default\Extensions
Run Code Online (Sandbox Code Playgroud)
在那里找到您的扩展程序的更新 URL:
{
"name": "My extension",
...
"update_url": "http://myhost.com/mytestextension/updates.xml",
...
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
appid 扩展程序或应用程序 ID,根据公钥的哈希值生成,如打包中所述。您可以通过转至扩展程序页面 (chrome://extensions) 找到扩展程序或 Chrome 应用程序的 ID。
代码库 .crx 文件的 URL。
version 客户端使用它来确定是否应该下载代码库指定的.crx 文件。它应该与.crx 文件的manifest.json 文件中的“version”值匹配。
更新清单XML文件可以通过包括多个元素来包含关于多个扩展的信息。
另一种选择是使用--extensions-update-Frequency命令行标志来设置更频繁的间隔(以秒为单位)。例如,要使检查每 45 秒运行一次,请像这样运行 Google Chrome:
chrome.exe --extensions-update-frequency=45
Run Code Online (Sandbox Code Playgroud)
请注意,这会影响对所有已安装的扩展和应用程序的检查,因此请考虑由此产生的带宽和服务器负载影响。您可能想暂时卸载除您正在测试的那个之外的所有内容,并且在正常浏览器使用期间不应在打开此选项的情况下运行。
更新每个单独扩展的请求将是:
http://test.com/extension_updates.php?x=id%3DyourAppID%26v%3D1.1
Run Code Online (Sandbox Code Playgroud)
您可以在扩展开发人员网站上找到更多详细信息:https ://developer.chrome.com/extensions
| 归档时间: |
|
| 查看次数: |
3331 次 |
| 最近记录: |