Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Selenium中读取Web浏览器控制台?_Java_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

Java 如何在Selenium中读取Web浏览器控制台?

Java 如何在Selenium中读取Web浏览器控制台?,java,selenium,selenium-webdriver,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,我使用的是Selenium版本2.46.0。 为了调试不同的问题(例如客户端问题),我希望获得所有web浏览器控制台内容(错误、警告…) 我尝试使用: LogEntries logs1 = DefaultDriver.getWebDriver().manage().logs().get("client"); 但是得到了空的日志条目 顺便说一句,我定义了以下功能: capabilities = DesiredCapabilities.firefox(); LoggingPreferences l

我使用的是Selenium版本2.46.0。 为了调试不同的问题(例如客户端问题),我希望获得所有web浏览器控制台内容(错误、警告…)

我尝试使用:

LogEntries logs1 = DefaultDriver.getWebDriver().manage().logs().get("client");
但是得到了空的日志条目

顺便说一句,我定义了以下功能:

capabilities = DesiredCapabilities.firefox();
LoggingPreferences logs = new LoggingPreferences();
logs.enable( LogType.CLIENT, Level.ALL );
capabilities.setCapability( CapabilityType.LOGGING_PREFS, logs );
webDriver = new FirefoxDriver( capabilities );
我还尝试了“驱动程序”和“浏览器”日志类型,但没有获得web控制台内容

知道怎么做吗

以下链接中的解决方案不起作用。。。

我不确定这是否有效。 但是你可以试着用下面的方法打开控制台

Actions builder=新操作(pbDriver);
builder.keyDown(Keys.CONTROL).sendKeys(Keys.F12).keyUp(Keys.CONTROL).perform()

然后使用selenium与控制台交互

或者

通过从用户数据目录“手动”获取日志,您可以尝试一种不那么优雅的解决方案:

  • 将用户数据目录设置为固定位置:

    options=new ChromeOptions();
    能力=DesiredCapabilities.chrome();
    options.addArguments(“用户数据目录=/your_路径/”);
    能力。设置能力(ChromeOptions.CAPABILITY,选项)

  • 从位于上面输入的路径中的日志文件chrome_debug.log获取文本

  • 编辑:

    实际上,我尝试了问题中提到的方法,它对我有效。我使用的浏览器是Chrome。正如我所指出的,我使用了.enable(LogType.BROWSER)来获取日志。 下面的代码将打印整个运行期间捕获的所有日志

    LogEntries-LogEntries=pbDriver.manage().logs().get(“浏览器”);
    用于(日志条目:日志条目){
    System.out.println(entry.getMessage());


    我刚刚了解到,由于开发人员工具不是DOM模型的一部分,因此selenium不能用于与DOM模型交互。selenium可以用来完成这项工作

    我不确定这是否有效。 但是你可以试着用下面的方法打开控制台

    Actions builder=新操作(pbDriver);
    builder.keyDown(Keys.CONTROL).sendKeys(Keys.F12).keyUp(Keys.CONTROL).perform();

    然后使用selenium与控制台交互

    或者

    通过从用户数据目录“手动”获取日志,您可以尝试一种不那么优雅的解决方案:

  • 将用户数据目录设置为固定位置:

    options=new ChromeOptions();
    能力=DesiredCapabilities.chrome();
    options.addArguments(“用户数据目录=/your_路径/”);
    能力。设置能力(ChromeOptions.CAPABILITY,options);

  • 从位于上面输入的路径中的日志文件chrome_debug.log获取文本

  • 编辑:

    实际上,我尝试了问题中提到的方法,它对我很有效。我使用的浏览器是Chrome。正如我指出的,我使用了.enable(LogType.browser)来获取日志。 下面的代码将打印整个运行期间捕获的所有日志

    LogEntries-LogEntries=pbDriver.manage().logs().get(“浏览器”);
    用于(日志条目:日志条目){
    System.out.println(entry.getMessage());

    我刚刚了解到,由于开发人员工具不是DOM模型的一部分,因此无法使用selenium与之交互。可以使用selenium完成此项工作

    您可以尝试以下方法:

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    def get_logs2(driver):
    # enable browser logging
        #d = DesiredCapabilities.CHROME
        #d['goog:loggingPrefs'] = { 'browser':'ALL' }
        #driver = webdriver.Chrome(desired_capabilities=d)
    
        # load the desired webpage
        #driver.get('http://34.90.50.21/')
        #driver.get(driver.current_url)
        a = driver.get_log('browser')
    
        # print messages
        for entry in driver.get_log('browser'):
            print(entry)
        print("finished")
        return a
    
    或者选中此项:

    您可以尝试以下操作:

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    def get_logs2(driver):
    # enable browser logging
        #d = DesiredCapabilities.CHROME
        #d['goog:loggingPrefs'] = { 'browser':'ALL' }
        #driver = webdriver.Chrome(desired_capabilities=d)
    
        # load the desired webpage
        #driver.get('http://34.90.50.21/')
        #driver.get(driver.current_url)
        a = driver.get_log('browser')
    
        # print messages
        for entry in driver.get_log('browser'):
            print(entry)
        print("finished")
        return a
    

    或者检查此项:

    可能重复@Eugene,该链接中描述的解决方案不起作用您需要
    .get(LogType.BROWSER)
    而不是
    .get(“客户端”)
    。代码的功能部分很好。可能重复@Eugene,该链接中描述的解决方案不起作用您需要
    .get(LogType.BROWSER)
    not
    .get(“client”)
    。代码的功能部分很好。”…使用selenium与控制台交互“您可以显示此功能的工作示例吗?”…使用selenium与控制台交互“您可以显示此功能的工作示例吗?”?