Проблемы параллельного выполнения: управление сеансами Selenium WebDriver при внедрении реализаций объектов страницы с пJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы параллельного выполнения: управление сеансами Selenium WebDriver при внедрении реализаций объектов страницы с п

Сообщение Anonymous »

Мне нужно внедрить различные реализации PageObject в зависимости от какого-либо свойства, но я столкнулся с проблемой управления сеансами WebDriver.

Код: Выделить всё

@Configuration
public class WebDriverConfig {
@Bean
@Scope("browserscope")
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@ConditionalOnProperty(name = "browser", havingValue = "chrome")
public WebDriver chromeDriver(){
ChromeOptions chromeOptions = new ChromeOptions();
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver(chromeOptions);
driver.manage().window().maximize();
return driver;
}
}
Я использую Cucumber для запуска своих тестов, и он работает должным образом, когда я запускаю один сценарий огурца, но когда я запускаю их параллельно, значения из одного Поток используется в другом потоке
Вот как выглядит мой класс определения шага

Код: Выделить всё

@SpringBootTest
@CucumberContextConfiguration
@Scope("cucumber-glue")
public class CPLSteps {

}
Я использую testng для параллельного запуска своих функций огурца

Код: Выделить всё

    import io.cucumber.testng.CucumberOptions;
import io.cucumber.testng.FeatureWrapper;
import io.cucumber.testng.PickleWrapper;
import io.cucumber.testng.TestNGCucumberRunner;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

@CucumberOptions(
features = "src/test/resources/features",
glue = "com.intact.contactpl.web.ui.bdd",
tags = "@smoke",
plugin = {"pretty", "html:target/cucumber-reports/index.html",
"json:target/cucumber-reports/CucumberTestReport.json"
},
monochrome = true
)
public class FeatureParallelTest {
private TestNGCucumberRunner testNGCucumberRunner;

@BeforeClass(alwaysRun = true)
public void setUpClass() {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}

@Test(groups = "cucumber", description = "Runs Cucumber Feature", dataProvider = "features")
public void feature(PickleWrapper pickleWrapper, FeatureWrapper featureWrapper) throws          Throwable{
testNGCucumberRunner.runScenario(pickleWrapper.getPickle());
}

@DataProvider(parallel = true)
public Object[][] features() {
return testNGCucumberRunner.provideScenarios();
}

@AfterClass(alwaysRun = true)
public void tearDownClass() {
if (testNGCucumberRunner == null) {
return;
}
testNGCucumberRunner.finish();
}

}
Не знаю, что я делаю неправильно, как мне правильно управлять сеансами??
Пример класса объекта моей страницы:

Код: Выделить всё

    @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER,       ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Documented
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public class Login extends BasePageObject {

@FindBy(id = "username")
private WebElement txt_username;
@FindBy(id = "password")
private WebElement txt_password;
@FindBy(id = "login-btn-label")
private WebElement btn_login;
@Value("${internalURL}")
private String URL;

public Login openLoginPage(String url) {
this.driver.get(url);
return this;
}

Я попробовал добавить @Scope("cucumber-glue") в класс определения Step, но это не помогло мне решить проблему.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -injecting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»