0

我正在尝试使用 Page Factory 将元素与我的 Base Test 和 Test runner 分开,但是当我运行它时它返回一个错误。有人可以在我的代码中帮助我吗?

我已经尝试在谷歌上搜索修复但没有任何效果

公共类 BaseTest {

private final String URL_STRING = "http://127.0.0.1:7622/wd/hub";
protected URL url;
public AndroidDriver<AndroidElement> driver;

private final static String APP_PACKAGE_NAME = "com.android.chrome";
private final static String APP_ACTIVITY_NAME = "com.google.android.apps.chrome.Main";

public AndroidDriver<AndroidElement> init() throws MalformedURLException {
    url = new URL(URL_STRING);
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability(AndroidMobileCapabilityType.PLATFORM_NAME, Platform.ANDROID);
    caps.setCapability(MobileCapabilityType.UDID, "emulator-5554");
    caps.setCapability(MobileCapabilityType.NO_RESET, true);
    caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, APP_PACKAGE_NAME);
    caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, APP_ACTIVITY_NAME);
    caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Samsung");


    driver = new AndroidDriver<AndroidElement>(url, caps);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);


    return driver;
}

}

公共类主页扩展 BaseTest {

@AndroidFindBy(id = "com.android.chrome:id/search_box_text")
public AndroidElement searchTxt;

public HomePage() {
    PageFactory.initElements(new AppiumFieldDecorator(this.driver), this);
}

公共类 SampleGoogle 扩展 BaseTest {

@Test
public void Sample() throws MalformedURLException {

    HomePage homePage       = new HomePage();

    homePage.init();
    homePage.setSearch("Test");

预期的结果应该是 Chrome 将在我的模拟器上打开,然后测试将写入搜索栏中,但是当我运行代码时返回错误。

失败:示例 java.lang.IllegalArgumentException:无法在 sun.reflect 处将 io.appium.java_client.android.AndroidElement 字段 com.google.HomePage.searchTxt 设置为 org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d27c0df4。 UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source) at java.lang.reflect.Field.set(Unknown Source) at org.openqa。 selenium.support.PageFactory.proxyFields(PageFactory.java:117) 在 org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:105) 在 com.google.HomePage.(HomePage.java:21) 在 com。 sun.reflect.NativeMethodAccessorImpl 中的 testcases.SampleGoogle.Sample(SampleGoogle.java:17)。在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 在 java.lang.reflect.Method.invoke(Unknown Source) 在 org.testng.internal 的 invoke0(Native Method)。 MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) at org.testng.internal.Invoker.invokeMethod(Invoker.java:661) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) at org.testng.internal .Invoker.invokeTestMethods(Invoker.java:1193) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 在 org.testng。 TestRunner.privateRun(TestRunner.java:744) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org. testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally (TestNG.java:1226) 在 org.testng.TestNG.runSuites(TestNG.java:1144) 在 org.testng.TestNG.run(TestNG.java:1115) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG. java:126) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker .java:86) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 在 org.testng.TestNG.runSuites(TestNG.java:1144)在 org.testng.TestNG.run(TestNG.java:1115) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker .java:86) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 在 org.testng.TestNG.runSuites(TestNG.java:1144)在 org.testng.TestNG.run(TestNG.java:1115) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org. testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) at org.testng.remote .RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org. testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) at org.testng.remote .RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58) 运行(AbstractRemoteTestNG.java:126)在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58) 运行(AbstractRemoteTestNG.java:126)

4

1 回答 1

-1

我也遇到了同样的问题,我的错误:我在 appium URL 的 wd 中使用了大写“W”(所需的功能)。将其更改为小“w”(wd),现在可以正常工作

于 2019-10-30T12:56:58.027 回答