我正在使用selenium web驱动程序构建一个自动化测试套件。在某一点上,我必须通过打开或关闭chrome扩展来测试页面的工作方式。把它想象成你想要点击adblock扩展,然后点击这个站点的disable。然后,再打开它。我搜索了整个互联网,没有办法实现这个只用 selenium 。你知道我怎么能做出这样的动作吗(来自java)
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);
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")
如果您正在加载一个扩展,但它在匿名模式下不可用,请按照我的答案在这里启用它。
nle07wnf3#
如果你想点击chrome右侧的扩展图标你可以用这个
public void openBrowserExtension(){ JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("window.postMessage('clicked_browser_action', '*')"); }
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);
如果您想在一个测试中打开和关闭它们,您可以生成两个单独的驱动程序并比较结果,因为我不确定会话重用在这种情况下是否可以完成这项工作。
4条答案
按热度按时间hgc7kmma1#
可以使用sikuli(gui自动化工具)点击浏览器插件。
需要进口:
脚本:
ve7v8dk22#
下面是python和pyautogui的解决方案(我相信它类似于java中的autoit,所以您也可以为java扩展相同的解决方案)。
前提条件:
将扩展图像保存在项目文件夹中(在我的示例中,我使用“capture\u full\u screenshot.png”名称将其保存在“autogui\u ref\u snaps”文件夹下)
Python:
需要进口
脚本:
如果您正在加载一个扩展,但它在匿名模式下不可用,请按照我的答案在这里启用它。
nle07wnf3#
如果你想点击chrome右侧的扩展图标
你可以用这个
d7v8vwbk4#
一个可能的解决方案是使用chrome选项并管理webdriver的扩展集。快速示例:
如果您想在一个测试中打开和关闭它们,您可以生成两个单独的驱动程序并比较结果,因为我不确定会话重用在这种情况下是否可以完成这项工作。