Webelement.click()在appium中给出java.lang.NullPointerException [英] Webelement.click() giving java.lang.NullPointerException in appium
问题描述
每次尝试在代码行element.click()下运行以下代码时,我都会得到NullPointerException
I am getting NullPointerException everytime I try to run below code at code line element.click()
注意:如果我注释了最后一行代码,则通过. 在此处也提出了类似的问题,但这没有帮助.
Note : It passes if I comment the last line of code. Also similar question was asked here but it didn't help.
AndroidDriver driver;
@Test
public void TestAppium() throws Exception{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "MotoG5s Plus");
capabilities.setCapability("platformVersion", "7.1.1");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("noReset", "true");
File file = new File("D:\\Appium Workspace\\AppiumDemo\\apk\\MakeMyTrip Flights Hotels Cabs IRCTC Rail Bookings_v7.3.2_apkpure.com.apk");
capabilities.setCapability("app", file.getAbsolutePath());
driver = new AndroidDriver(new URL("http://10.80.196.55:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Thread.sleep(10000);
WebElement element = driver.findElementById("com.makemytrip:id/my_profile_icon");
element.click();
}
此外,如下面的屏幕截图所示,我的驱动程序onject也不为空
Also my driver onject is not null as you can see from below screenshot
该元素也不为null,如下面的屏幕截图所示:-
Also the element is not null as you can see in screenshot below :-
我什至放了thread.sleep()以防万一是由于加载. 在findelementbyid()方法中提供的ID是正确的.并启动应用程序,然后
I have even put the thread.sleep() in case it is because of loading. The ID given in findelementbyid() method is correct. And also it launches the app and then it
它启动应用程序,然后抛出以下错误消息:-
It Launches the app and then it throws below error message :-
java.lang.NullPointerException
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:279)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)
at Appiumcapabilities.TestAppium(Appiumcapabilities.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:580)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
我正在使用selenium-java-3.9.1和appium服务器1.7.1,testNG Windows 10,appium-java-client版本4.1.0
I am using selenium-java-3.9.1 and appium server 1.7.1, testNG Windows 10, appium-java-client version 4.1.0
推荐答案
Do not set selenium dependency explicitly as appium-java-client dependency already has it in-built: you are running into library incompatibility issue.
如果需要更改Selenium的版本,则可以按以下方式配置pom.xml:
If it is necessary to change the version of Selenium then you can configure pom.xml like following:
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>${version.you.require}</version>
<scope>test</test>
<exclusions>
<exclusion>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version.you.require}</version>
</dependency>
可以使用 Gradle 完成相同的事情:
Same thing can be done with Gradle:
repositories {
jcenter()
maven {
url "http://repo.maven.apache.org/maven2"
}
}
dependencies {
...
testCompile group: 'io.appium', name: 'java-client', version: requiredVersion {
exclude module: 'selenium-java'
}
testCompile group: 'org.seleniumhq.selenium', name: 'selenium-java',
version: requiredSeleniumVersion
...
}
这篇关于Webelement.click()在appium中给出java.lang.NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!