NoSuchFieldException:驱动程序
Posted
技术标签:
【中文标题】NoSuchFieldException:驱动程序【英文标题】:NoSuchFieldException:driver 【发布时间】: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();
【问题讨论】:
请清理您的代码以使其更具可读性并添加您看到的任何堆栈跟踪 还要指出是哪一行产生了错误。 【参考方案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
方法。
【讨论】:
以上是关于NoSuchFieldException:驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
Java 反射 java.lang.NoSuchFieldException:
获取 java.lang.NoSuchFieldException:Android Arch 生命周期的 ON_START
Java进阶 六 Java反射机制可恶问题NoSuchFieldException
AS的kotlin的报错提示:java.lang.NoSuchFieldException: 表名
使用 Gradle、Groovy 和 spring-boot 加载失败并出现 java.lang.NoSuchFieldException:classCache