如何解决日志信息在 selenium 项目中使用 `new FirefoxOptions()` 优于 `DesiredCapabilities.firefox()`

Posted

技术标签:

【中文标题】如何解决日志信息在 selenium 项目中使用 `new FirefoxOptions()` 优于 `DesiredCapabilities.firefox()`【英文标题】:How to address the log INFO Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()` in selenium project 【发布时间】:2019-11-22 07:34:29 【问题描述】:

我刚刚开始了一个 selenium 项目,但事情并不顺利,所以经过一番搜索,我找到了这个解决方案。它有效,但我无法理解这些红色声明要我做什么,或者如何摆脱它们。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.*;

public class SelTest1

    public  static void main(String [] args)
    
        System.setProperty("webdriver.gecko.driver","X:\\Gecko\\geckodriver-v0.24.0-win64\\geckodriver.exe");

        File pathBinary = new File("X:\\FireFoxx\\firefox.exe");
        FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);
        DesiredCapabilities desired = DesiredCapabilities.firefox();
        FirefoxOptions options = new FirefoxOptions();
        desired.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options.setBinary(firefoxBinary));
        WebDriver obj = new FirefoxDriver(options);

        obj.get("http://www.google.com/");
    

我得到了我想要的结果,但我不明白警告红色语句

我把那些红线警告也放在这里是为了方便

Jul 12, 2019 7:07:28 PM org.openqa.selenium.remote.DesiredCapabilities firefox
INFO: Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()`
1562938650997   mozrunner::runner   INFO    Running command: "X:\\FireFoxx\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\adars\\AppData\\Local\\Temp\\rust_mozprofile.uTUmeENutxin"
1562938652637   addons.webextension.screenshots@mozilla.org WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons
1562938652638   addons.webextension.screenshots@mozilla.org WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/
1562938652638   addons.webextension.screenshots@mozilla.org WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader*
1562938655909   Marionette  INFO    Listening on port 50040
1562938655964   Marionette  WARN    TLS certificate errors will be ignored for this session
Jul 12, 2019 7:07:36 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

【问题讨论】:

您的示例不必要地调用了 DesiredCapabilities.firefox() ...您甚至从未使用过它,因此只需删除该行即可摆脱第一条信息消息...其余的可以忽略。 没有它,它会显示这个“线程中的异常”主“org.openqa.selenium.WebDriverException:在PATH中找不到firefox二进制文件。确保安装了firefox。操作系统似乎是:WIN10”,我确实添加了路径,我不会在它的默认位置重新安装 firefox。 【参考方案1】:

INFO 日志消息:

INFO: Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()`

是合并于以下内容的更改的结果:

Selenium v​​3.0.0-beta4

Added ability to use FirefoxOptions when starting firefox.

Selenium v​​3.5.0

* Start making *Option classes instances of Capabilities. This allows
  the user to do:

  `WebDriver driver = new RemoteWebDriver(new InternetExplorerOptions());`

如果您的用例是明确提及FirefoxBinary 的绝对位置,您可以使用以下解决方案:

使用FirefoxOptions

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;

public class A_Firefox_binary 

    public static void main(String[] args) 
    
        System.setProperty("webdriver.gecko.driver", "C:/Utility/BrowserDrivers/geckodriver.exe");
        FirefoxOptions options = new FirefoxOptions();
        options.setBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
        WebDriver driver =  new FirefoxDriver(options);
        driver.get("https://***.com");
        System.out.println("Page Title is : "+driver.getTitle());
        driver.quit();
    

控制台输出:

Page Title is : Stack Overflow - Where Developers Learn, Share, & Build Careers

【讨论】:

以上是关于如何解决日志信息在 selenium 项目中使用 `new FirefoxOptions()` 优于 `DesiredCapabilities.firefox()`的主要内容,如果未能解决你的问题,请参考以下文章

在 Selenium 中,如何关闭日志记录?

如何使用 Selenium 和 Python 在控制台中跳过调试日志

log4j 日志信息的引入 — 解决项目运行过程中的日志信息

Log4j 日志信息的引入 ( 通用版 ) : 解决项目运行过程中的日志信息

日志终极总结

安卓项目如何把日志输出到指定文件