#java #selenium #selenium-webdriver #browserstack
#java #селен #selenium-webdriver #browserstack
Вопрос:
Я использую это https://www.browserstack.com/docs/automate/selenium/view-test-results/mark-tests-as-pass-fail в качестве ссылки. Но я не могу позволить REST API показывать «сбой». Могу ли я узнать, в чем моя проблема? Я также прикрепил текстовые журналы, в них показано «Запустить JavaScript ……», это правильно?
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.JavascriptExecutor;
public class test1 {
public WebDriver driver = null;
public static final String USERNAME = "";
public static final String AUTOMATE_KEY = "";
public static final String URL = "https://" USERNAME ":" AUTOMATE_KEY "@hub-cloud.browserstack.com/wd/hub";
@BeforeClass
public void setup() throws MalformedURLException {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("os", "Windows");
caps.setCapability("os_version", "10");
caps.setCapability("browser", "Chrome");
caps.setCapability("browser_version", "80");
caps.setCapability("name", "Test1");
driver = new RemoteWebDriver(new URL(URL), caps);
}
@Test (priority = 1)
public void test_1() {
driver.get("https://youtube.com");
String actualUrl = "https://www.youtube.com/";
String expectedUrl = "https://www.youtube.com/";
Assert.assertEquals(actualUrl, expectedUrl);
JavascriptExecutor jse = (JavascriptExecutor)driver;
if (actualUrl.equals(expectedUrl)) {
jse.executeScript("browserstack_executor: {"action": "setSessionStatus", "arguments": {"status": "passed", "reason": "Url matched!"}}");
}
else {
jse.executeScript("browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed", "reason": "Url not matched"}}");
}
}
@Test (priority = 2)
public void test_2() {
driver.get("https://google.com");
String actualUrl = "https://www.google.com/";
String expectedUrl = "https://www.youtube1.com/";
Assert.assertEquals(actualUrl, expectedUrl);
JavascriptExecutor jse = (JavascriptExecutor)driver;
if (actualUrl.equals(expectedUrl)) {
jse.executeScript("browserstack_executor: {"action": "setSessionStatus", "arguments": {"status": "passed", "reason": "Url matched!"}}");
}
else {
jse.executeScript("browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed", "reason": "Url not matched"}}");
}
}
@AfterClass
public void tearDown() {
driver.quit();
}
}
Я тестировал с youtube и URL-адресом Google.
Ответ №1:
Assert.assertEquals(actualUrl, expectedUrl);
это не мягкое утверждение, оно остановит выполнение команды, поэтому тест не дойдет до строки api.
удалите это из своих тестов или используйте soft assert .
SoftAssert softAssert = new SoftAssert();
softAssert.assertEquals(actualUrl, expectedUrl)