Буду признателен за любые советы здесь. Я пытаюсь использовать объект драйвера из инфраструктуры POM с помощью TestNG и реализации интерфейса ITestListerner.Как сфокусироваться на драйвере firefox в сочетании с TestNG, реализующим ITestListener
Это класс TestNG реализации ItestListener
public class TestNGListener implements ITestListener {
@Override
public void onFinish(ITestContext result) {
WebDriver driver = BrowserFactory.LanuchBrowser("firefox", "http://10.207.182.108:81/opencart/");
Util.takescreenshot(driver, result.getName());
}
Этот класс используется для возврата WebDriver объекта после запуска одного браузера от коммутатора случае. Я использую тот же драйвер, как обособленно TestNG путем внедрения Itestlistener & перекрывая отказа общественного недействительным onFinish (ITestContext результат) в вышеприведенном классе &, к сожалению, он не возвращает объект WebDriver & сделать снимок экрана, но запускает новый браузер вместо ,
public class BrowserFactory {
static WebDriver driver;
public static WebDriver LanuchBrowser(String Brwsr, String URL){
System.out.println(Brwsr.toLowerCase());
switch (Brwsr.toLowerCase()){
case "firefox":
driver=new FirefoxDriver();
break;
case "chrome":
driver= new ChromeDriver();
System.setProperty("WebDriver.chrome.driver", "chromedriver.exe");
break;
case "internet explorer":
System.out.println("IE");
driver= new InternetExplorerDriver();
System.setProperty("WebDriver.IE.driver","IEDriverServer.exe");
break;
default:
System.out.println("Please select one of the Browsers listed : Chrome,Firefox or InternetExplorer");
break;
}
driver.manage().window().maximize();
driver.get(URL);
return driver;
}
}
Вот мой метод для захвата экрана
public class Util {
final static Logger logger = Logger.getLogger(Util.class);
public static void validatePgeNavgtn(WebDriver driver, String PgeTitle){
PropertyConfigurator.configure("log4j.properties");
String pgtitle=driver.getTitle();
if (pgtitle.equalsIgnoreCase(PgeTitle)){
logger.info("title matched");
}
}
public static void takescreenshot(WebDriver driver, String screen){
TakesScreenshot ts = (TakesScreenshot)driver;
File src= ts.getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(src, new File("./Screenshot/"+screen+".png"));
} catch (IOException e) {
logger.warn(e.getMessage());
}
}
Не могли бы вы предложить подход, который ниже метод не должен запустить новый сеанс браузера, но основное внимание следует сохранить в первую очередь браузера & также Захватите снимок экрана
Большое спасибо за предложение. Мне нужно включить конструктор с аргументом, как показано ниже, чтобы иметь возможность использовать 'browserFactoryInstance = new BrowserFactory (Brwsr, URL);' или мне нужно сделать вызов 'BrowserFactory (String Brwsr, String URL)' из 'getInstance () '. –
@nandeshkalyankar вы не можете вызвать конструктор напрямую, потому что он является частным .. вам нужно вызвать getInstance() вместо этого. –