如何解决QAF:在 QAF 中实施自我修复Healenium
我是 QAF 的新手,我需要在我们的测试方法中使用 healenium 实现自我修复。我在没有 QAF 的情况下实现了它,它工作正常。请参考以下代码。
import com.epam.healenium.SelfhealingDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.jupiter.api.Afterall;
import org.junit.jupiter.api.BeforeAll;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.concurrent.TimeUnit;
public class BaseTest {
static protected SelfhealingDriver driver;
@BeforeAll
static public void setUp() {
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.setHeadless(false);
//declare delegate
WebDriver delegate = new ChromeDriver(options);
driver = SelfhealingDriver.create(delegate);
driver.manage().timeouts().implicitlyWait(4,TimeUnit.SECONDS);
driver.manage().window().setSize(new Dimension(1200,800));
}
@Afterall
static public void afterall() {
if (driver != null) {
driver.quit();
}
}
}
我只想用上面的 QAF 网络驱动程序包装这个自我修复驱动程序。
解决方法
QAF 不鼓励对驱动程序使用静态类变量。所提供的代码不适用于并行执行。驱动程序管理由 qaf 负责,具有线程安全性和可使用 property selenium.singletone
设置的不同行为。
需要 SelfHealingDriver 时可以尝试以下方式:
public class SampleTest extends WebDriverTestCase {
@Test
public void yourTestCase(){
SelfHealingDriver driver = SelfHealingDriver.create(getDriver());
//your code goes below
}
}
如果您想在创建驱动程序后做一些事情,您可以使用 driver listener。例如:
public class WDListener extends QAFWebDriverCommandAdapter {
//this method will called when new driver object created
public void onInitialize(QAFExtendedWebDriver driver){
driver.manage().timeouts().implicitlyWait(4,TimeUnit.SECONDS);
driver.manage().window().setSize(new Dimension(1200,800));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。