自動化しながら、Firefoxなどの複数のブラウザを開きます。
driver1 = webdriver.Firefox()
driver2 = webdriver.Firefox()
driver3 = webdriver.Firefox()
.....
アクティブなブラウザのsession_id
およびwebdriver自体を取得する方法はありますか? Appiumについても同じ質問です。 session_id
とアクティブデバイス(仮想または実)のドライバー自体を取得することは可能ですか?
Selenium/JavaでドライバーセッションIDを取得するには:
WebDriver driver = new FirefoxDriver();
SessionId session = ((FirefoxDriver)driver).getSessionId();
System.out.println("Session id: " + session.toString());
Selenium/JavaでリモートドライバーセッションIDを取得するには:
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());
DataFactoryを使用します。次のスニペット(Katalon Studioで記述されていますが、Seleniumを使用しているため、他のツールでも同様または同じだと思います)
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)
大括弧内のセッションID。
問題の回避策があります。セッションを作成できます。これにより、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();