Open laikas123 opened 1 year ago
Currently there is not an option to export code that already supports selenium grid.
Though adding this would be a great benefit and it would be very simple.
For example, consider exporting the "Python (AppDynamics)" format.
To change the existing code such that it exports to a selenium grid format here is all that would need to change:
Original Code:
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoAlertPresentException import unittest, time, re class AppDynamicsJob(unittest.TestCase): def setUp(self): # AppDynamics will automatically override this web driver # as documented in https://docs.appdynamics.com/display/PRO44/Write+Your+First+Script self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "https://www.google.com/" self.verificationErrors = [] self.accept_next_alert = True def test_app_dynamics_job(self): driver = self.driver driver.get("https://google.com/") def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): # To know more about the difference between verify and assert, # visit https://www.seleniumhq.org/docs/06_test_design_considerations.jsp#validating-results self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
Modified Code to Support Selenium Grid:
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoAlertPresentException import unittest, time, re from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class AppDynamicsJob(unittest.TestCase): def setUp(self): # AppDynamics will automatically override this web driver # as documented in https://docs.appdynamics.com/display/PRO44/Write+Your+First+Script self.driver = webdriver.Remote(command_executor='http://localhost:4444', desired_capabilities=DesiredCapabilities.FIREFOX) self.vars = {} self.driver.implicitly_wait(30) self.base_url = "https://www.google.com/" self.verificationErrors = [] self.accept_next_alert = True def test_app_dynamics_job(self): driver = self.driver driver.get("https://google.com/") def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): # To know more about the difference between verify and assert, # visit https://www.seleniumhq.org/docs/06_test_design_considerations.jsp#validating-results self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
Basically you just add these lines:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities #this replaces the existing driver assignment self.driver = webdriver.Remote(command_executor='http://localhost:4444', desired_capabilities=DesiredCapabilities.FIREFOX) #to cleanup self.driver.quit()
Would be cool to export directly to this format rather than having to later parse the file.
With that being said such an awesome extensions as is!
Currently there is not an option to export code that already supports selenium grid.
Though adding this would be a great benefit and it would be very simple.
For example, consider exporting the "Python (AppDynamics)" format.
To change the existing code such that it exports to a selenium grid format here is all that would need to change:
Original Code:
Modified Code to Support Selenium Grid:
Basically you just add these lines:
Would be cool to export directly to this format rather than having to later parse the file.
With that being said such an awesome extensions as is!