Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?

Posted

技术标签:

【中文标题】Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?【英文标题】:Can Selenium WebDriver (java) interact with the Browser's inspect tool element selector? 【发布时间】:2019-12-15 11:28:49 【问题描述】:

通过使用 selenium,我可以访问位于检查选项卡中的浏览器元素选择器(Ctrl + Shift + C,在浏览器中)吗?

我想使用该选择器“指向”一个元素并让它在浏览器中突出显示。

例如,像这样简单的东西:

WebElement elem = driver.findElement(By.id("userName")); elem.pointer();

这将在浏览器中将元素显示为突出显示/选中,检查选项卡的工作方式相同。

【问题讨论】:

这不太可能,因为驱动程序通常无法访问特定于浏览器的操作/UI。您可以将 CSS 注入到元素中以执行诸如在元素周围添加红色边框等操作。谷歌“selenium highlight element”,您会发现许多示例,例如 this 据我所知,chrome的驱动中没有提供这样的api 【参考方案1】:

部分。使用selenium-webdriver,您很快就能使用Java 客户端与google-chrome-devtools API 交互。

Chrome DevTools Protocol 的集成仍处于WIP(正在进行中),@AdiOhana 最近为Network 和Performance 域提供了contributed,以便更好地面向用户的API。

在Controlling Chrome Devtools with Selenium Webdriver@AdiOhana 的讨论中提到的示例用法如下:

    driver.getDevTools().createSession();
    driver.getDevTools().send(new Command("Profiler.enable", ImmutableMap.of()));
    driver.getDevTools().send(new Command("Profiler.start", ImmutableMap.of()));
    //register to profiler events
    driver.getDevTools().addListener(new Event("Profiler.consoleProfileStarted", ConsoleProfileStarted.class), new Consumer<Object>() 
        @Override
        public void accept(Object o) 
            //do something
        
    );

注意:在将 Profiler 域添加到 Selenium java 客户端之前,您必须提供 Mapper。


结尾

What is the difference between WebDriver and DevTool protocol

【讨论】:

以上是关于Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?的主要内容,如果未能解决你的问题,请参考以下文章

[Selenium+Java] Verify Tooltip Using Selenium WebDriver

零基础Selenium:Webdriver图文入门教程java篇(附相关包下载)

如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]

java+selenium webdriver怎么实现数据参数化

无法使用Selenium和Java 11导入org.openqa.selenium.WebDriver

[Selenium+Java] Listeners and their use in Selenium WebDriver