【问题标题】:NoSuchFieldException:driverNoSuchFieldException:驱动程序
【发布时间】:2020-11-14 12:21:10
【问题描述】:

我像往常一样运行我的回归和冒烟测试,但在这个过程的中间,它自己的过程失败了。我收到上述错误。我更新了我的 chrome 驱动程序以及 chrome 本身。但是我一直收到同样的错误,这是我第一次遇到这样的问题,我已经查看了代码,但我找不到任何合理的错误。有什么建议吗?

在这里找到我的部分基本代码...

public class base {

    public static WebDriver driver;
    public  Properties prop;

    public WebDriver initializeDriver() throws IOException 
    {
        prop = new Properties();
            //FileInputStream System.getProperty("user.dir")
        FileInputStream file = new FileInputStream(System.getProperty("user.dir")+"/src/main/java/resources/data.properties");
        prop.load(file);
        String browserName = prop.getProperty("browser");
        //Field field = Class.getField("driver");
        //String browserName = System.getProperty("browser");
        System.out.println(browserName);
        if (browserName.equals("Chrome")){
            //Execute
            System.setProperty("webdriver.chrome.driver","/Users/lisandrosilva/Documents/Drivers/chromedriver 6");
            //ChromeOptions options = new ChromeOptions();
            driver = new ChromeDriver();
        }
        if(browserName.equals("headless")) {
            System.setProperty("webdriver.chrome.driver","/Users/lisandrosilva/Documents/Drivers/chromedriver 5");
            ChromeOptions options = new ChromeOptions();
                    options.addArguments("--headless");

                    options.addArguments("--disable-gpu");
                    driver = new ChromeDriver(options); 
            }            
        else if (browserName.equals("Safari")) {
            //Execute
            //driver = new SafariDriver();
        }
        else if (browserName.equals("FireFox")) {
            System.setProperty("webdriver.gecko.driver","/Users/lisandrosilva/Documents/Drivers/geckodriver 3");
                        driver = new FirefoxDriver();   
            //Execute
                // driver = new FirefoxDriver();
        }

【问题讨论】:

  • 请清理您的代码以使其更具可读性并添加您看到的任何堆栈跟踪
  • 还要指出是哪一行产生了错误。

标签: java selenium selenium-webdriver properties properties-file


【解决方案1】:

NoSuchFieldException

NoSuchFieldException 表示该类没有指定名称的字段。

如果此错误发生在您的测试中间,则可能是您的程序访问了错误的文件。我建议将属性文件重命名为 myProp.properties 而不是 data.properties 并执行您的测试。

【讨论】:

  • 嗯,这似乎让事情变得更糟,实际上没有测试以文件为 myProp.properties...
  • @LisandroFernando 所以你可能没有使用自己的data.properties,而是使用缓存的data.properties
  • 好的,先生,您对缓存的 data.properties 有任何可能的解决方案吗?我正在调用我的驱动程序静态来不填充浏览器内存。
  • 我也手动打开了 chrome 浏览器,进入设置并删除了所有缓存和 cookie,但问题仍然存在......有什么想法吗?
  • 我刚刚发现为什么我会遇到这样的问题。这是一个 TestNG 侦听器,我有这个方法 getDeclaredField 使回归在运行时失败。相反,我使用了 getField 方法,该方法被视为超类。感谢关注
【解决方案2】:

我遇到了同样的问题,现在已经解决了,正如Lisandro Fernando 在他们的comment 中提到的那样。

使用getField 方法代替getDeclaredField 方法。

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多