线程“主”中的异常org.openqa.selenium.NoSuchElementException:使用给定的搜索参数无法在页面上找到元素

时间:2019-03-28 06:29:19

标签: java appium

使用以下代码时出现错误:

driver.findElementByClassName("//android.widget.EditText").sendKeys("hello");

完整代码如下:

package aaaaa;

import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;

public class basics extends base {

    public static void main(String[] args) throws MalformedURLException, InterruptedException {

        AndroidDriver<AndroidElement> driver = Capabilities();

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElementByXPath("//android.widget.TextView[@text='Preference']").click();
        Thread.sleep(2000);
        driver.findElementByXPath("//android.widget.TextView[@text='3. Preference dependencies']").click();
        Thread.sleep(3000);
        driver.findElementByXPath("//android.widget.CheckBox").click();
        Thread.sleep(3000);
        driver.findElementByXPath("//android.widget.TextView[@text='WiFi settings']").click();
        Thread.sleep(3000);
        driver.findElementByClassName("//android.widget.EditText").click();
        Thread.sleep(30000);
        driver.findElementById("//android:id/edit").sendKeys("hi");
        driver.findElementByClassName("//android.widget.EditText").sendKeys("hello");
    }
}

我希望在EditText中输入文字。

1 个答案:

答案 0 :(得分:1)

之所以找不到该元素,是因为您在php .\artisan serve中使用了//,就像在xpath中使用它一样。
但是,在使用classNameclassName之类的标记查找任何元素时,id不是必需的。

您可以使用//来查找元素,例如:

className

由于该元素还存在id,因此您也可以使用id查找该元素,例如:

driver.findElementByClassName("android.widget.EditText").click();