У меня есть сценарий автоматизации Java, запускаемый в Selenium, по какой-то причине он, кажется, инициализирован дважды.Первый сценарий проходит, но не закрывается, это вызывает второй запуск того же сценария, который также проходит, но закрывается.
Это происходит на всех сценариях, которые я запускаю, и, таким образом, вызывает загрузку окна дляоткрытый и не закрытый (очень грязный)
Я создал метод разрыва, который можно увидеть ниже.Это часть моего класса настройки Selenium
package support;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumSetup {
protected WebDriver driver;
public SeleniumSetup(WebDriver driver)
{
}
public SeleniumSetup() {
}
public void prepareBrowserForSelenium() {
// setup();
if(DriverSingleton.getDriver() == null)
{
setup();
}
else
{
driver = DriverSingleton.getDriver();
}
}
public void setup() {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Selenium and drivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://the-internet.herokuapp.com/");
driver.manage().window().maximize();
}
public void tearDown() {
driver.close();
}
}
Вот мой код для BasePage
package pages;
import org.openqa.selenium.WebDriver;
public class BasePage {
protected WebDriver driver;
public BasePage(WebDriver driver) {
this.driver = driver;
}
}
Вот класс, который я использую для запуска своих скриптов:
package support;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
// features = "src/test/java/features/ABTestingPage.feature"
// features = "src/test/java/features/Checkboxes.feature"
// features = "src/test/java/features/Dropdown.feature"
// features = "src/test/java/features/AutomationLandingPage.feature"
features = "src/test/java/features/ChallengingDOM.feature"
// features = "src/test/java/@ABTestingPage"
,glue={"steps"}
)
public class TestRunner {
}
Вот мои Шаги, которые включают в себя мой класс SeleniumSetup
package steps;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import pages.ChallengingDOMPage;
import pages.DropdownPage;
import support.SeleniumSetup;
public class ChallengingDOMSteps extends SeleniumSetup{
public ChallengingDOMSteps()throws Exception{
prepareBrowserForSelenium();
}
@Given("^I am on the landing page$")
public void i_am_on_the_landing_page() throws Throwable {
new ChallengingDOMPage(driver).landingPage();
}
@When("^I select \"(.*?)\"$")
public void i_select(String arg1) throws Throwable {
new ChallengingDOMPage(driver).selectChallengingDOM();
}
@Then("^I will be navigated to the \"(.*?)\" page$")
public void i_will_be_navigated_to_the_page(String arg1) throws Throwable {
if(arg1.equalsIgnoreCase("Challenging DOM"))
new ChallengingDOMPage(driver).verifyChallegingDOMPage();
else if(arg1.equals("Dropdown"))
new DropdownPage(driver).verifyDropdownHeading();
}
}
Я думаю, мой код для шага в порядке.
package pages;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import junit.framework.Assert;
public class ChallengingDOMPage extends BasePage {
public ChallengingDOMPage(WebDriver driver) {
super(driver);
}
By landingPageCopy = By.className("heading");
public void landingPage() {
driver.findElement(landingPageCopy).getText();
System.out.println("verified copy on landing page on DOM test");
}
public void selectChallengingDOM() {
driver.findElement(By.linkText("Challenging DOM")).click();
System.out.println("DOM URL clicked");
}
public void verifyChallegingDOMPage() {
Assert.assertTrue(driver.findElement(By.xpath("//*[contains(text(), 'The hardest part')]")).isDisplayed());
System.out.println("Copy Verified on the DOM page");
}
}
Это вывод консоли
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by cucumber.deps.com.thoughtworks.xstream.converters.collections.TreeMapConverter (file:/C:/Users/awalker/.m2/repository/info/cukes/cucumber-jvm-deps/1.0.3/cucumber-jvm-deps-1.0.3.jar) to field java.util.TreeMap.comparator
WARNING: Please consider reporting this to the maintainers of cucumber.deps.com.thoughtworks.xstream.converters.collections.TreeMapConverter
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Starting ChromeDriver 2.44.609538 (b655c5a60b0b544917107a59d4153d4bf78e1b90) on port 43775
Only local connections are allowed.
verified copy on landing page on DOM test
DOM URL clicked
Copy Verified on the DOM page
Starting ChromeDriver 2.44.609538 (b655c5a60b0b544917107a59d4153d4bf78e1b90) on port 34425
Only local connections are allowed.
1 Scenarios ([32m1 passed[0m)
4 Steps ([32m4 passed[0m)
0m11.433s
Я должен попасть на эту страницу http://the -internet.herokuapp.com / , перейти к http://the -internet.herokuapp.com / challengeing_dom и проверить копию