Можно ли получить сессионный идентификатор активного драйвера, открытого с помощью Selenium и Appium, если было активировано несколько драйверов?

При автоматизации я открываю несколько браузеров, скажем Firefox, с

driver1 = webdriver.Firefox()
driver2 = webdriver.Firefox()
driver3 = webdriver.Firefox()
.....

Есть ли способ получить session_id а сам вебдрайвер из активного браузера? Тот же вопрос для Appium. Можно ли получить session_id а сам драйвер активного устройства (виртуальный или реальный)?

1 ответ

Чтобы получить идентификатор сеанса драйвера с Selenium / Java:

WebDriver driver = new FirefoxDriver();

SessionId session = ((FirefoxDriver)driver).getSessionId();
System.out.println("Session id: " + session.toString());

Чтобы получить идентификатор сеанса удаленного драйвера с помощью Selenium / Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4722/wd/hub"), capabilities);

SessionId session = ((RemoteWebDriver)driver).getSessionId();
System.out.println("Session id: " + session.toString());
((ChromeDriver)driver).sessionId();

Используйте DataFactory. Следующий фрагмент (написанный в Katalon Studio, но использующий селен, поэтому я думаю, что он будет похож или похож на другие инструменты)

WebDriver driver1 = new ChromeDriver()
WebDriver driver2 = new ChromeDriver()

DriverFactory.changeWebDriver(driver1)
driver1.get("https://www.example.com")
println DriverFactory.webDriver

DriverFactory.changeWebDriver(driver2)
driver2.get("https://news.example.com")
println DriverFactory.webDriver

распечатает на консоль:

ChromeDriver: chrome on XP (fc70e83ced12b3e9beed990e88670d8e)
ChromeDriver: chrome on XP (a810d0cf94dbaf1cbd018542f9c983c3)

с идентификатором сессии в скобках.

Существует решение этой проблемы. Вы можете создать сессию. Это дает вам экземпляр Webdriver, но также и sessionID.

DefaultDriverFactory defaultDriverFactory = new DefaultDriverFactory(Platform.WINDOWS); 
TemporaryFilesystem temporaryFilesystem = TemporaryFilesystem.getDefaultTmpFS(); 
ChromeOptions chromeOptions = new ChromeOptions();
Session session = DefaultSession.createSession(defaultDriverFactory, temporaryFilesystem, chromeOptions); 
WebDriver webDriver = session.getDriver();
SessionId sessionId = session.getSessionId(); 
Другие вопросы по тегам