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

siv3szwd  于 2021-07-09  发布在  Java
关注(0)|答案(4)|浏览(749)

我正在使用selenium web驱动程序构建一个自动化测试套件。在某一点上,我必须通过打开或关闭chrome扩展来测试页面的工作方式。把它想象成你想要点击adblock扩展,然后点击这个站点的disable。然后,再打开它。我搜索了整个互联网,没有办法实现这个只用 selenium 。你知道我怎么能做出这样的动作吗(来自java)

hgc7kmma

hgc7kmma1#

可以使用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);
ve7v8dk2

ve7v8dk22#

下面是python和pyautogui的解决方案(我相信它类似于java中的autoit,所以您也可以为java扩展相同的解决方案)。
前提条件:
将扩展图像保存在项目文件夹中(在我的示例中,我使用“capture\u full\u screenshot.png”名称将其保存在“autogui\u ref\u snaps”文件夹下)
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")

如果您正在加载一个扩展,但它在匿名模式下不可用,请按照我的答案在这里启用它。

nle07wnf

nle07wnf3#

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

你可以用这个

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

d7v8vwbk4#

一个可能的解决方案是使用chrome选项并管理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);

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

相关问题