Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法单击/选择按钮和文本字段_Java_Android_Selenium_Appium - Fatal编程技术网

Java 无法单击/选择按钮和文本字段

Java 无法单击/选择按钮和文本字段,java,android,selenium,appium,Java,Android,Selenium,Appium,朋友们 下面是我的代码,应用程序在运行时启动,但无法选择按钮,错误如下: 是因为我使用的是RemoteWebDriver而不是AndroidDriver吗 应用程序错误日志: > info: [debug] Responding to client with error: {"status":7,"value":{"message":"An element could not be located on the page using the given search parameters

朋友们

下面是我的代码,应用程序在运行时启动,但无法选择按钮,错误如下:

是因为我使用的是RemoteWebDriver而不是AndroidDriver吗

应用程序错误日志:

 > info: [debug] Responding to client with error: {"status":7,"value":{"message":"An element could not be located on the page using the given search parameters.","origValue":"Element was not found."},"sessionId":"633dd3fe-7233-eb66-8903-c63b69246cf0"}
> info: <-- POST /wd/hub/session/633dd3fe-7233-eb66-8903-c63b69246cf0/element 500 30181.879 ms - 201 
Test Started
FAILED: test
org.openqa.selenium.NoSuchElementException: An element could not be located   on the page using the given search parameters. (WARNING: The server did not   provide any stacktrace information)
 Command duration or timeout: 30.19 seconds
 For documentation on this error, please visit:     http://seleniumhq.org/exceptions/no_such_element.html
  Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:20'
  System info: host: 'NCA1026471', ip: '192.168.56.1', os.name: 'Windows 7',   os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_66'
 Driver info: org.openqa.selenium.remote.RemoteWebDriver
 Capabilities [{app=C:\Appium\selendroid-test-app-0.17.0.apk,     appPackage=io.selendroid.testapp, rotatable=true, networkConnectionEnabled=true,    warnings={}, handlesAlerts=true, deviceName=Lokesh Gangaiah, version=0.17.0,   platform=ANDROID, appActivity=io.selendroid.testapp.HomeScreenActivity, desired=  {app=C:\Appium\selendroid-test-app-0.17.0.apk, appPackage=io.selendroid.testapp,  appActivity=io.selendroid.testapp.HomeScreenActivity, platformVersion=5.0,  browserName=, platformName=Android, deviceName=Lokesh Gangaiah, device=Android}, acceptSslCerts=true, platformVersion=21, automationName=selendroid,   browserName=selendroid, takesScreenshot=true, javascriptEnabled=true,  platformName=android, device=Android}]
Session ID: 633dd3fe-7233-eb66-8903-c63b69246cf0
 *** Element info: {Using=id,   value=io.selendroid.testapp:id/buttonStartWebview}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java代码:

 import java.io.File;
 import java.net.URL;
 import java.util.concurrent.TimeUnit;
 import io.appium.java_client.MobileElement;
 import io.appium.java_client.android.AndroidDriver;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.mobile.*;
 import org.openqa.selenium.remote.CapabilityType;
 import org.openqa.selenium.remote.DesiredCapabilities;  
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;

 public class testP1 {

 public static RemoteWebDriver driver;
//public static AndroidDriver<MobileElement> driver;

@BeforeClass
public static void setUpBeforeClass() throws Exception {

        File appDir = new File ("C:\\Appium\\");
        //File app = new File (appDir,"CarsGuide com   au_v1.0.8.1_apkpure.com.apk");
        File app = new File (appDir,"selendroid-test-app-0.17.0.apk");
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("browserName", "");
        //capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "Lokesh Gangaiah");
        capabilities.setCapability("platformVersion", "5.0");
        capabilities.setCapability("device", "Android");

        capabilities.setCapability("app",app.getAbsolutePath());
        capabilities.setCapability("appPackage", "io.selendroid.testapp");
        capabilities.setCapability("appActivity", "io.selendroid.testapp.HomeScreenActivity");

        //capabilities.setCapability("appPackage", "au.com.carsguide");
        //capabilities.setCapability("appActivity", "au.com.carsguide.activity.HomeActivity");

        driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

}

@Test
public void test() throws InterruptedException {

    System.out.println("Test Started");

    WebElement ButtonElement =     driver.findElementById("io.selendroid.testapp:id/buttonStartWebview");
    ButtonElement.click();

    Thread.sleep(3000L);

    System.out.println("Test has been completed");

    //System.out.println("Hello2");


    //       driver.findElementByName("Search Cars for Sale").click();
    //By.id("au.com.carsguide:id/search_btn").findElement(driver).click();
    Thread.sleep(1000L);

   }

  @AfterClass
     public void tearDown()
     {
        driver.quit();
    }

 }
构建信息:版本:'2.48.2',修订版:'41bccdd',时间:'2015-10-09 19:59:20' 系统信息:主机:'NCA1026471',ip:'192.168.56.1',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.8.0_66' 驱动程序信息:org.openqa.selenium.remote.RemoteWebDriver 功能[{app=C:\Appium\selendroid-test-app-0.17.0.apk,appPackage=io.selendroid.testapp,rotatable=true,networkConnectionEnabled=true,warnings={},handlesAlerts=true,deviceName=Lokesh Gangaiah,version=0.17.0,platform=ANDROID,appActivity=io.selendroid.testapp.HomeScreenActivity,所需={app=C:\Appium\selendroid-test-app-0.17.0.apk,appPackage=io.selendroid.testapp,appActivity=io.selendroid.testapp.HomeScreenActivity,platformVersion=5.0,browserName=,platformName=Android,deviceName=Lokesh Gangaiah,device=Android},acceptSslCerts=true,platformVersion=21,automationName=selendroid,browserName=selendroid,takesScreenshot=true,javascriptEnabled=true,platformName=android,device=android}] 会话ID:990a6104-0d06-f75a-876c-531a23388b7c

尝试使用AndroidDriver获取以下错误:
配置失败:@BeforeClass setUpBeforeClass
java.lang.Error:未解决的编译问题:
返回类型与继承的方法FindsByAccessibilityId.findElementsByAccessibilityId(字符串)、AppiumDriver.findElementsByAccessibilityId(字符串)不兼容
返回类型与继承的方法findsbycsselector.findelementsbycsselector(字符串)、AppiumDriver.findelementsbycsselector(字符串)不兼容

在单击之前添加一些等待命令:

@Test
public void test() throws InterruptedException {

    System.out.println("Test Started");

    //wait for the button to show up before clicking
    waitForElementPresent();
    WebElement ButtonElement =     driver.findElementByName("buttonStartWebviewCD");
    ButtonElement.click();
}
     public void waitForElementPresent() {
            WebDriverWait wait = new WebDriverWait(driver, 20);
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("buttonStartWebviewCD")));
        }

你确定你使用的是页面上可用的正确id吗?是的,id是正确的,我交叉验证你能分享你的定位器页面的屏幕截图吗?是的,刚刚上传等待你想点击EN按钮对吗?谢谢你的回复,尝试了上面的内容,看到下面的错误:@Lokesh你能分享你的UIAutoma的屏幕截图吗tor.这样我可以帮助你。看起来你使用了错误的定位器。我会尝试一下,让你知道上面的代码是有效的,但是没有什么问题,如果你能帮助我就太好了。我确实得到了一些澄清,我使用了完整的资源id包,在看到这篇文章后:它帮助我将资源id更改为仅用于button_名字..然后它起作用了
 FAILED CONFIGURATION: @BeforeClass setUpBeforeClass
 java.lang.Error: Unresolved compilation problems: 
 The return types are incompatible for the inherited methods   FindsByAccessibilityId<WebElement>.findElementsByAccessibilityId(String),   AppiumDriver<RequiredElementType>.findElementsByAccessibilityId(String)
The return types are incompatible for the inherited methods   FindsByCssSelector.findElementsByCssSelector(String),   AppiumDriver<RequiredElementType>.findElementsByCssSelector(String)
@Test
public void test() throws InterruptedException {

    System.out.println("Test Started");

    //wait for the button to show up before clicking
    waitForElementPresent();
    WebElement ButtonElement =     driver.findElementByName("buttonStartWebviewCD");
    ButtonElement.click();
}
     public void waitForElementPresent() {
            WebDriverWait wait = new WebDriverWait(driver, 20);
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("buttonStartWebviewCD")));
        }