.getText() 在实际设备自动化测试中返回 NullPointerException



每当我使用driver.findElement(By.anything("")).getText();时,我都会得到NullPointerException。在安卓真实设备测试上。

  • Appium 1.8.1
  • 三星 S8
  • ChromeDriver 2.38
  • ChromeBrowser 最新

我的测试库中的波纹管代码用于初始化驱动程序,那里可能有问题吗?他们缺少部分代码是为了初始化Driver

if (driver == null) {
switch (prop.getProperty("browser")) {
case "chrome":
System.setProperty("webdriver.chrome.driver", prop.getProperty("chrome.driver.path"));
driver = new ChromeDriver();
break;
default:
System.out.println("Wrong driver was chosen! Plsease choose the driver.");
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
return driver;
}
public static AndroidDriver<MobileElement> initializeMobileDriver() {
if (Mdriver == null) {
switch (prop.getProperty("MobileBrowser")) {
case "android":
capabilities = DesiredCapabilities.android();
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, BrowserType.CHROME);
capabilities.setCapability("autoGrantPermissions", "true"); 
capabilities.setCapability(MobileCapabilityType.SUPPORTS_FINDING_BY_CSS, true);
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, prop.getProperty("DeviceName"));
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, prop.getProperty("AppiumVersion"));
capabilities.setCapability(MobileCapabilityType.PLATFORM, Platform.ANDROID);
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, prop.getProperty("PlatformName"));
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, prop.getProperty("PlatformVersion"));
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, prop.getProperty("DeviceName"));
capabilities.setCapability("autoAcceptAlerts", "true");
try {
Mdriver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
driver = Mdriver;
} catch (Exception e) {
System.out.println(" error is " + e.getMessage());
}
break;
default:
System.out.println("Wrong driver was chosen! Plsease choose the driver.");
}
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
return Mdriver;
}

可以使用任何代码简单代码,并返回 null。

@Test public static void SimpleGetTextTest(( {

driver.get("https://google.com")
driver.findElement(By.name("q")).sendKeys("Java"+Keys.ENTER);
driver.findElement(By.xpath("//div[@class = 'MUxGbd']")).getText();

这将返回 NullPointerException

我解决了这个问题。

基本上正如你在代码中看到的那样,我使用了 Mdriver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"(, capabilities(;,其中 AndroidDriver = Mdriver;

我在两个实例上将其更改为远程驱动程序,一切开始工作。希望这有帮助

最新更新