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

时间:2017-10-31 18:37:32

标签: java selenium automation ui-automation

我正在使用Selenium Web Driver构建自动化测试套件。在某个时刻,我必须通过打开或关闭 Chrome扩展程序来测试页面的工作方式。您可以将其想象为单击Adblock扩展程序,然后单击“禁用此站点”。然后,再次打开它。 我在互联网上搜索,只使用Selenium 无法实现这一点。 你知道我怎么能做这样的动作? (理想情况下来自Java)

5 个答案:

答案 0 :(得分:1)

关于blazemeter是一个很好的描述,可能也适合你:

Blazemeter-way of testing crx extesion

答案 1 :(得分: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 :(得分:1)

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

>

前提条件:

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

Python:

需要导入

from selenium import webdriver
from selenium.webdriver import ChromeOptions
from Common_Methods.GenericMethods import *
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 :(得分:0)

可以使用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 :(得分:-1)

如果您要单击Chrome右侧的扩展程序图标 enter image description here

您可以使用此

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