Wie kann ich überprüfen, ob die Nachricht erfolgreich in Appium gesendet wurde?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann ich überprüfen, ob die Nachricht erfolgreich in Appium gesendet wurde?

by Anonymous » 08 Sep 2025, 02:36

Diese Aufgabe wird mir von meinem Chef übertragen. Ich habe keine Kenntnis von Appium und heute ist der erste Tag, an dem ich es installiert habe. Ich habe einen einfachen Test geschrieben, bei dem ich die Nachricht von Real Device an eine Kurznummer gesendet habe. Ich muss überprüfen, ob die Nachricht erfolgreich gesendet wurde. Wenn es nicht erfolgreich gesendet wird, kann ich diese Nachricht unterhalb der Textblase sehen:
! Nicht gesendet. Überprüfen Sie die Optionen
Dies ist der Code, den ich bisher geschrieben habe: < /p>

Code: Select all

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>
Ich habe versucht, XPath des nicht gesendeten Textes zu erhalten. Es war so etwas:
/android.view.view..message_list" weibs.view.view.view..message_list" weibs. Ich habe versucht, das [url=viewtopic.php?t=26065]Problem[/url] mit Chatgpt zu lösen. Letztes Mal wurde dieser Code generiert und hat nicht gearbeitet. Überprüfen Sie die Optionen. Text < /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);
}

Top