我在设置第一个appium项目后得到了java.lang.NoSuchMethodError
代码很简单,它在这一行失败了:
driver = new AppiumDriver(new URL("http://x.x.x.x:4723/wd/hub"), capabilities);
跟踪是:
java.lang.NoSuchMethodError: com.google.common.base.Joiner$MapJoiner.appendTo(Ljava/lang/StringBuilder;Ljava/lang/Iterable;)Ljava/lang/StringBuilder;
at com.google.common.net.MediaType.toString(MediaType.java:674)
at org.openqa.selenium.remote.http.JsonHttpCommandCodec.encode(JsonHttpCommandCodec.java:197)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:152)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)
我的pom.xml是:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>LATEST</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
<scope>test</scope>
</dependency>
<!-- Includes the Sauce JUnit helper libraries
<dependency>
<groupId>com.saucelabs</groupId>
<artifactId>sauce_junit</artifactId>
<version>1.0.18</version>
<scope>test</scope>
</dependency>-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
</dependencies>
我谷歌了,有人说我使用的是较旧的guava.jar,但是我发现了guava-15.0.jar并且发现Joiner.appendTo(StringBuilder,Iterable)存在,为什么它总是显示这个错误?< / p>
@Before
public void setUp() throws Exception {
// set up appium
final File classpathRoot = new File(System.getProperty("user.dir"));
final File appDir = new File(classpathRoot, "../../../apps/ContactManager");
final File app = new File(appDir, "ContactManager.apk");
final DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage",
"com.example.android.contactmanager");
capabilities.setCapability("appActivity", ".ContactManager");
driver = new AndroidDriver(new URL("http://x.x.x.x:4723/wd/hub"),
capabilities);
}
运行命令“mvn -U clean test”后,我也可以看到此错误
Tests in error:
addContact(com.saucelabs.appium.AndroidContactsTest):com.google.common.base.Joiner$MapJoiner.appendTo(Ljava/lang/StringBuilder;Ljava/lang/Iterable;)Ljava/lang/StringBuilder;
addContact(com.saucelabs.appium.AndroidContactsTest)
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0
只有一个名为addContact的测试用例,为什么它一直显示Test run:2?通过调试,我发现它在运行这句“driver.quit()”时发生,在删除此方法后,它显示了测试运行:1
依赖树是下面的列表,我没有看到任何关于MapJoiner的信息,除了guava-17.0,实际上我可以在这个jar文件中找到MapJoiner.appendTo(Stringbuilder,iterate&lt;&gt;)
[INFO] com.lvntest.appium:sauce_appium_junit:jar:0.0.1-SNAPSHOT
[INFO] +- junit:junit:jar:4.11:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:2.43.1:test
[INFO] | +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.43.1:test
[INFO] | | \- org.seleniumhq.selenium:selenium-remote-driver:jar:2.43.1:test
[INFO] | | +- cglib:cglib-nodep:jar:2.1_3:test
[INFO] | | \- org.seleniumhq.selenium:selenium-api:jar:2.43.1:test
[INFO] | +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.43.1:test
[INFO] | | \- net.sourceforge.htmlunit:htmlunit:jar:2.15:test
[INFO] | | +- xalan:xalan:jar:2.7.1:test
[INFO] | | | \- xalan:serializer:jar:2.7.1:test
[INFO] | | +- commons-collections:commons-collections:jar:3.2.1:test
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.3.2:test
[INFO] | | +- org.apache.httpcomponents:httpmime:jar:4.3.3:test
[INFO] | | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.15:test
[INFO] | | +- xerces:xercesImpl:jar:2.11.0:test
[INFO] | | | \- xml-apis:xml-apis:jar:1.4.01:test
[INFO] | | +- net.sourceforge.nekohtml:nekohtml:jar:1.9.21:test
[INFO] | | +- net.sourceforge.cssparser:cssparser:jar:0.9.14:test
[INFO] | | | \- org.w3c.css:sac:jar:1.3:test
[INFO] | | \- org.eclipse.jetty:jetty-websocket:jar:8.1.15.v20140411:test
[INFO] | | +- org.eclipse.jetty:jetty-util:jar:8.1.15.v20140411:test
[INFO] | | +- org.eclipse.jetty:jetty-io:jar:8.1.15.v20140411:test
[INFO] | | \- org.eclipse.jetty:jetty-http:jar:8.1.15.v20140411:test
[INFO] | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.43.1:test
[INFO] | | +- commons-io:commons-io:jar:2.4:test
[INFO] | | \- org.apache.commons:commons-exec:jar:1.1:test
[INFO] | +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.43.1:test
[INFO] | | +- net.java.dev.jna:jna:jar:3.4.0:test
[INFO] | | \- net.java.dev.jna:platform:jar:3.4.0:test
[INFO] | +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.43.1:test
[INFO] | +- org.seleniumhq.selenium:selenium-support:jar:2.43.1:test
[INFO] | \- org.webbitserver:webbit:jar:0.4.15:test
[INFO] | \- io.netty:netty:jar:3.5.5.Final:test
[INFO] +- io.appium:java-client:jar:2.0.0:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.3:compile
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.3.2:compile
[INFO] | | +- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] | | \- commons-codec:commons-codec:jar:1.6:compile
[INFO] | +- com.google.guava:guava:jar:17.0:compile
[INFO] | +- cglib:cglib:jar:3.1:compile
[INFO] | | \- org.ow2.asm:asm:jar:4.2:compile
[INFO] | \- org.reflections:reflections:jar:0.9.8:compile
[INFO] | +- javassist:javassist:jar:3.12.1.GA:compile
[INFO] | \- dom4j:dom4j:jar:1.6.1:compile
[INFO] +- com.googlecode.json-simple:json-simple:jar:1.1.1:test
[INFO] +- commons-lang:commons-lang:jar:2.6:test
[INFO] +- com.saucelabs:sauce_junit:jar:2.1.10:compile
[INFO] | +- com.saucelabs:sauce_java_common:jar:2.1.10:compile
[INFO] | \- com.saucelabs:saucerest:jar:1.0.22:compile
[INFO] | \- org.json:json:jar:20090211:compile
[INFO] \- com.google.code.gson:gson:jar:2.3:compile
答案 0 :(得分:1)
您使用的是哪种版本的硒?
使用以下方式之一编辑pom.xml。
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>LATEST</version>
</dependency>
对于上述依赖项,使用AndroidDriver()代替AppiumDriver()或使用以下内容与AppiumDriver()
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.42.2</version>
</dependency>
干杯
答案 1 :(得分:0)
这是硒和鸦片版本不匹配。两者的最新版本都可能导致这种错误。您可以在下面找到最新的匹配版本:
Sub sbCopyingAFileReadFromSheet()
Dim FSO
Dim sFile As String
Dim sSFolder As String
Dim sDFolder As String
'source file
sFile = Sheets("Main").Range("C26")
'source folder
SFolder = Sheets("Main").Range("c27")
'destination folder
sDFolder = Selection
'Create Object for File System
Set FSO = CreateObject("Scripting.FileSystemObject")
'Checking If File Is Located in the Source Folder
If Not FSO.FileExists(sSFolder & sFile) Then
MsgBox "Specified File Not Found in Source Folder", vbInformation, "Not Found"
'Copying If the Same File is Not Located in the Destination Folder
ElseIf Not FSO.FileExists(sDFolder & sFile) Then
FSO.CopyFile (sSFolder & sFile), (sSFolder & sDFolder), True
MsgBox "Specified File Copied to Destination Folder Successfully", vbInformation, "Done!"
Else
MsgBox "Specified File Already Exists In The Destination Folder", vbExclamation,"File Already Exists"
End If
End Sub
随时使用最新的匹配版本来编辑此答案。