如何触发对 chrome 扩展按钮的点击?

Posted

技术标签:

【中文标题】如何触发对 chrome 扩展按钮的点击?【英文标题】:How to trigger a click on a chrome extension button? 【发布时间】:2018-04-13 00:51:34 【问题描述】:

我正在使用 Selenium Web Driver 构建一个自动化测试套件。在某个时候,我必须通过 打开或关闭 Chrome 扩展程序来测试页面的工作方式。可以将其想象为您要单击 Adblock 扩展程序,然后单击该站点的禁用。然后,再次打开它。 我在整个 Internet 上进行了搜索,没有办法仅使用 Selenium 来实现这一点你知道我怎么能执行这样的操作吗? (最好来自 Java)

【问题讨论】:

On blazemeter 是一个很好的描述,它可能也适合你:Blazemeter-way of testing crx extesion 您是否尝试使用ChromeOptions?它允许您为运行设置所需的扩展,因此一个测试可以使用这些扩展,而下一个测试则不能。 这是一个非常好的提示!我可以用它作为最后的手段。理想情况下,我想通过按下按钮打开/关闭扩展程序并检查网站的反应。谢谢! ;) 把评论变成了答案,这样人们可以很容易地找到它,如果有帮助就投票。 我们知道,我们不能点击任何使用 selenium webdriver 的浏览器扩展,最好的选择是使用 sikuli。从“launchpad.net/sikuli/+download”下载 Jar 文件添加到您的库并按照 piet.t 中提到的步骤进行操作。它对我有用.. 【参考方案1】:

一种可能的解决方案是使用Chrome options 并管理设置为 WebDriver 的扩展。快速示例:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

如果您想在单个测试中打开和关闭它们,您可以生成两个单独的驱动程序并比较结果,因为我不确定在这种情况下会话重用是否可以完成这项工作。

【讨论】:

【参考方案2】:

下面的解决方案是在 Python 中使用 pyautogui(我相信它类似于 java 中的 autoit - 因此您也可以为 java 扩展相同的解决方案)。 p>

前置条件:

将扩展图像保存在项目文件夹中(在我的示例中,我将其保存在“autogui_ref_snaps”文件夹下,名称为“capture_full_screenshot.png”

Python:

需要进口

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import pyautogui  #<== need this to click on extension

脚本:

options = ChromeOptions()
options.add_argument("--load-extension=" + r"C:\Users\supputuri\AppData\Local\Google\Chrome\User Data\Default\Extensions\fdpohaocaechififmbbbbbknoalclacl\5.1_0") #<== loading unpacked extension

driver = webdriver.Chrome(
executable_path=os.path.join(chrome_options=options)
url = "https://google.com/"
driver.get(url)

# get the extension box
extn = pyautogui.locateOnScreen(os.path.join(GenericMethods.get_full_path_to_folder('autogui_ref_snaps') + "/capture_full_screenshot.png"))
# click on extension 
pyautogui.click(x=extn[0],y=extn[1],clicks=1,interval=0.0,button="left")

如果您正在加载扩展程序并且它在隐身模式下不可用,请按照我在here 中的回答启用它。

【讨论】:

【参考方案3】:

可以使用sikuli(GUI自动化工具)点击浏览器插件。

需要进口:

    import org.sikuli.script.Pattern;
    import org.sikuli.script.Screen;

脚本:

    Pattern addon=new Pattern("D:\\My Files\\Addon.jpg");  //image of the addon must be given as a pattern for identifying that on the browser/webpage
    Screen s=new Screen();
    s.hover(addon);
    s.click(addon);

【讨论】:

【参考方案4】:

如果要点击chrome右侧的扩展图标

你可以用这个

public void openBrowserExtension()
        javascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("window.postMessage('clicked_browser_action', '*')");
    

【讨论】:

以上是关于如何触发对 chrome 扩展按钮的点击?的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 扩展:比特币钱包

如何安装webdriver chrome浏览器支持

chrome打包程序

Chrome扩展程序中的javascript点击行为问题

如何在 chrome 扩展中实现支付

如何在网页中调用chrome浏览器里的扩展程序