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

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

Post by Anonymous »

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);
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post