Эта задача дана мне моим боссом. Я не знаю Appium, и сегодня первый день, когда я его установил. Я написал простой тест, где я отправил сообщение с реального устройства на короткий номер. Я должен проверить, было ли сообщение успешно отправлено. Когда он не будет успешно отправлен, я вижу это сообщение ниже текстового пузыря:
! Не отправлено. Проверьте параметры
Это код, который я написал до сих пор: < /p>
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;
public class SendMessage {
private AndroidDriver driver;
private static final String APPIUM_SERVER_URL = "http://127.0.0.1:4723";
@BeforeTest
public void setup() throws MalformedURLException {
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("platformName","Android");
dc.setCapability("appium:automationName","uiautomator2");
dc.setCapability("appium:appium:deviceName","redmi_note_13");
dc.setCapability("appium:platformVersion","13");
dc.setCapability("appium:appPackage","com.google.android.apps.messaging");
dc.setCapability("appium:appActivity","com.google.android.apps.messaging.ui.ConversationListActivity");
dc.setCapability("appium:noReset", true);
driver = new AndroidDriver(new URL(APPIUM_SERVER_URL),dc);
}
@Test
public void sendMessage() {
String[] shortNumbers={"9008"};
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.findElement(By.xpath("//android.widget.Button[@content-desc='Start chat']")).click();
driver.findElement(By.xpath("//android.widget.EditText[@resource-id='ContactSearchField']")).sendKeys(shortNumbers[0]);
driver.findElement(By.xpath("//android.view.View[@resource-id='ContactSuggestionList']/android.view.View")).click();
driver.findElement(By.xpath("//android.widget.EditText[@resource-id='com.google.android.apps.messaging:id/compose_message_text']")).sendKeys("Test");
driver.findElement(By.xpath("//android.view.View[@resource-id='Compose:Draft:Send']/android.widget.Button")).click();
}
@AfterTest
public void close(){
driver.quit();
}
}
< /code>
Я попытался получить xpath от не отправленного текста. Это было что-то вроде этого:
//android.view.viewtn@resource-id="message_list"цин/android.view.view=], и у него нет никакого текста, с которым я могу проверить. Я попытался решить проблему с Chatgpt. В прошлый раз этот код был сгенерирован и не работал < /p>
Этот код предположительно проверяет содержание сообщения, потому что я не мог заставить его работать! Не отправлено. Проверьте параметры. Текст < /p>
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
// Get the last message bubble in the list
WebElement lastMessage = wait.until(driver ->
driver.findElement(By.xpath("//android.view.View[@resource-id='message_list']/android.view.View[last()]"))
);
// Look for the "failed" indicator inside the last message
List failedIndicator = lastMessage.findElements(By.xpath(".//android.view.View[contains(@content-desc, 'Failed')]"));
if (!failedIndicator.isEmpty()) {
System.out.println("Message failed to send!");
Assert.fail("Short number " + shortNumbers[0] + " failed: 'Failed' indicator appeared.");
} else {
System.out.println("Message sent successfully to short number: " + shortNumbers[0]);
Assert.assertTrue(true);
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-appium