一尘不染

使用Selenium WebDriver自动在chrome:// extensions页面上单击按钮

selenium

我正在尝试编写一个自动化测试,该自动化测试将自动执行更新Google
chrome扩展程序的过程。我不知道自动执行此操作的另一种方法,因此这是我当前正在尝试执行的操作:

  1. 打开chrome扩展程序页面(据我所知,除非我缺少某些内容,否则这只是一个html页面)。

  2. 点击“更新扩展名”按钮

这是我尝试打开chrome扩展页面的尝试:

IwebElement UpdateButton = driver.findelement(By.Id("update-extensions-now"));
UpdateButton.Click();

由于某种原因,按钮单击未注册。我尝试了其他一些定位器,例如CSS路径和Xpath,但是它们也不起作用。另外,当我调试该测试时,它可以顺利通过,因此我知道这对我的任何定位器都不是问题。我(作为测试)试图自动点击此页面上的其他元素,这是同样的问题。我根本无法在chrome://
extensions页面上处理任何元素。

是否有人遇到过这种情况或对发生的事情有任何想法?


阅读 633

收藏
2020-06-26

共1个答案

一尘不染

您可以使用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
您可以在exntesions开发人员网站上找到更详细的信息:https
//developer.chrome.com/extensions
2020-06-26