#java #appium
#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. Пожалуйста, добавьте html элемента, для которого возникает исключение
2. ПРИВЕТ, Самир, я новичок в stackover flow. я не знаю, как отправлять вопросы и следовать инструкциям.
3. я делюсь скриншотами для Uiautomator следующим образом: drive.google.com/open?id=1yYyOklO2hF75KIdg66W8gQbuJOi2OWH1
4. Никаких проблем, пожалуйста, но html элемента в самом вопросе
Ответ №1:
Причина, по которой элемент не найден, заключается в том, что вы использовали //
его в className
hj точно так же, как вы используете его в xpath.
Однако при поиске любого элемента использование тегов типа className
или id
, //
не требуется.
Вы можете найти элемент, используя className
подобный:
driver.findElementByClassName("android.widget.EditText").click();
И поскольку идентификатор также присутствует для элемента, вы можете найти элемент также с помощью id, например:
driver.findElementById("android:id/edit").sendKeys("hello");
Комментарии:
1. Хотя это, вероятно, работает, я думаю, разумно добавить для исходного сообщения, что причина, по которой исходный код не будет работать, заключается в том, что он пытался выполнить поиск по classname, но переданный параметр начинался с двойной косой черты — как xpath.
2. @BillHileman да, верно, я обновляю свой ответ в соответствии с вашим предложением