test_browserHandling.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. import pytest
  2. import platform
  3. from baangt.base import GlobalConstants as GC
  4. from baangt.base.BrowserHandling.BrowserHandling import BrowserDriver
  5. from unittest.mock import patch, MagicMock
  6. browserName = "FIREFOX"
  7. desired_app = [{GC.MOBILE_PLATFORM_NAME: "Android"}, {GC.MOBILE_PLATFORM_NAME: "iOS"}]
  8. mobileApp = ["True", "False"]
  9. mobile_app_setting = {
  10. GC.MOBILE_APP_URL: "test",
  11. GC.MOBILE_APP_PACKAGE: "com.baangt.pytest",
  12. GC.MOBILE_APP_ACTIVITY: "baangt.test",
  13. GC.MOBILE_APP_BROWSER_PATH: "temp"
  14. }
  15. @pytest.fixture
  16. def getdriver():
  17. """ This will return BrowserDriver instance
  18. for below test function
  19. """
  20. return BrowserDriver()
  21. def test_setZoomFactor(getdriver):
  22. """ check if png file created in path """
  23. # create browser
  24. from baangt.base import GlobalConstants as GC
  25. getdriver.createNewBrowser()
  26. getdriver.goToUrl("https://www.baangt.org")
  27. # FInd element by class
  28. getdriver.zoomFactorDesired = True
  29. getdriver.setZoomFactor(lZoomFactor=200)
  30. # TODO add check
  31. getdriver.closeBrowser()
  32. assert not getdriver.browserData.driver
  33. @pytest.mark.skipif(platform.system() != "Windows", reason="Windows Test only")
  34. @pytest.mark.parametrize(("driverName", "browserName"),
  35. [("geckodriver.exe", GC.BROWSER_FIREFOX), ("chromedriver.exe", GC.BROWSER_CHROME)])
  36. def test_downloadDriver_windows(getdriver, driverName, browserName):
  37. from pathlib import Path
  38. import os
  39. from baangt.base.PathManagement import ManagedPaths
  40. # Get Remove Driver File
  41. path = ManagedPaths().getOrSetDriverPath()
  42. fileName = Path(path).joinpath(driverName)
  43. try:
  44. os.remove(fileName)
  45. except:
  46. pass
  47. assert not os.path.isfile(fileName)
  48. # create browser
  49. getdriver.downloadDriver(browserName)
  50. assert os.path.isfile(fileName)
  51. @pytest.mark.skipif(platform.system() == "Windows", reason="Test for Linux and Mac")
  52. @pytest.mark.parametrize(("driverName", "browserName"),
  53. [("geckodriver", GC.BROWSER_FIREFOX), ("chromedriver", GC.BROWSER_CHROME)])
  54. def test_downloadDriver_NonWindows(getdriver, driverName, browserName):
  55. from pathlib import Path
  56. import os
  57. from baangt.base.PathManagement import ManagedPaths
  58. # Get Remove Driver File
  59. path = ManagedPaths().getOrSetDriverPath()
  60. fileName = Path(path).joinpath(driverName)
  61. try:
  62. os.remove(fileName)
  63. except:
  64. pass
  65. assert not os.path.isfile(fileName)
  66. # create browser
  67. getdriver.downloadDriver(browserName)
  68. assert os.path.isfile(fileName)
  69. def test_findBy_class(getdriver):
  70. """ check if png file created in path """
  71. # create browser
  72. from baangt.base import GlobalConstants as GC
  73. getdriver.createNewBrowser() # (mobileType = 'True', desired_app = desired_app)
  74. getdriver.goToUrl("https://www.baangt.org")
  75. # FInd element by class
  76. element, html = getdriver.findBy(class_name="et_pb_menu__wrap", timeout=20, optional=False)
  77. assert element is not None
  78. assert html is not None
  79. getdriver.closeBrowser()
  80. assert not getdriver.browserData.driver
  81. def test_findBy_id(getdriver):
  82. """ check if png file created in path """
  83. # create browser
  84. getdriver.createNewBrowser()
  85. getdriver.goToUrl("https://www.baangt.org/contact/")
  86. # FInd element by id
  87. element, html = getdriver.findBy(id="et_pb_contact_name_0", timeout=20, optional=False)
  88. assert "input" == element.tag_name
  89. assert "html" == html.tag_name
  90. getdriver.closeBrowser()
  91. assert not getdriver.browserData.driver
  92. def test_findByAndClick(getdriver):
  93. """ check if png file created in path """
  94. # create browser
  95. getdriver.createNewBrowser()
  96. getdriver.goToUrl("https://www.baangt.com")
  97. # FInd element by xpath
  98. result = getdriver.findByAndClick(xpath="//a[text()='Uncategorized']", timeout=20, optional=False)
  99. # the file name should exist
  100. assert result == True
  101. getdriver.closeBrowser()
  102. assert not getdriver.browserData.driver
  103. def test_slowExecutionToggle(getdriver):
  104. """ Test slowExecution Function """
  105. oldstate = getdriver.slowExecution
  106. # toggle
  107. newstate = getdriver.slowExecutionToggle()
  108. assert newstate != oldstate
  109. def test_takeScreenshot_exception(getdriver):
  110. """
  111. Test takeScreenshot method
  112. """
  113. filename = getdriver.takeScreenshot()
  114. import os
  115. # the file name should not exist
  116. assert not filename
  117. def test_takeScreenshot_filecheck(getdriver):
  118. """ check if png file created in path """
  119. # create browser
  120. getdriver.createNewBrowser()
  121. # take screenshot
  122. getdriver.goToUrl("http://www.google.com")
  123. filename = getdriver.takeScreenshot()
  124. import os
  125. # the file name should exist
  126. assert os.path.isfile(filename)
  127. getdriver.closeBrowser()
  128. assert not getdriver.browserData.driver
  129. def test_setBrowserWindowSizeEmpty(getdriver):
  130. getdriver.createNewBrowser()
  131. result = getdriver.setBrowserWindowSize(browserWindowSize="")
  132. getdriver.closeBrowser()
  133. assert result == False
  134. @pytest.mark.skipif(platform.system() == "Linux", reason="FF on Linux doesn't resize")
  135. def test_setBrowserWindowSizeReal(getdriver):
  136. getdriver.createNewBrowser()
  137. result = getdriver.setBrowserWindowSize("800;600")
  138. getdriver.closeBrowser()
  139. assert result["width"] > 750
  140. assert result["width"] < 850
  141. assert result["height"] > 550
  142. assert result["height"] < 650
  143. def test_setBrowserWindowSizeWrong(getdriver):
  144. getdriver.createNewBrowser()
  145. result = getdriver.setBrowserWindowSize("1234°1231")
  146. getdriver.closeBrowser()
  147. assert result == False
  148. def test_setBrowserWindowSizeWithLeadingStuff(getdriver):
  149. getdriver.createNewBrowser()
  150. result = getdriver.setBrowserWindowSize("--800,--600")
  151. getdriver.closeBrowser()
  152. assert isinstance(result, dict)
  153. def test_setBrowserWindowSizeWithX(getdriver):
  154. getdriver.createNewBrowser()
  155. result = getdriver.setBrowserWindowSize("--800x600")
  156. getdriver.closeBrowser()
  157. assert isinstance(result, dict)
  158. @pytest.mark.parametrize(
  159. "browserName, desired_app, mobileApp, mobile_app_setting",
  160. [
  161. (browserName, desired_app[0], mobileApp[0], mobile_app_setting),
  162. (browserName, desired_app[0], mobileApp[1], mobile_app_setting),
  163. (browserName, desired_app[1], mobileApp[0], mobile_app_setting),
  164. (browserName, desired_app[1], mobileApp[1], mobile_app_setting)
  165. ]
  166. )
  167. def test_mobileConnectAppium(browserName, desired_app, mobileApp, mobile_app_setting):
  168. from baangt.base.BrowserHandling.WebdriverFunctions import WebdriverFunctions
  169. wdf = WebdriverFunctions
  170. with patch.dict(wdf.BROWSER_DRIVERS, {GC.BROWSER_APPIUM: MagicMock}):
  171. BrowserDriver._mobileConnectAppium(browserName, desired_app, mobileApp, mobile_app_setting)
  172. assert 1 == 1
  173. def test_handleIframe(getdriver):
  174. getdriver.browserData = MagicMock()
  175. getdriver.handleIframe("test")
  176. assert 1 == 1
  177. getdriver.iFrame = "test"
  178. getdriver.handleIframe()
  179. assert 1 == 1
  180. def test_checkLinks(getdriver):
  181. getdriver.browserData = MagicMock()
  182. getdriver.checkLinks()
  183. assert 1 == 1
  184. def test_waitForPageLoadAfterButtonClick(getdriver):
  185. getdriver.browserData = MagicMock()
  186. getdriver.html = "test"
  187. getdriver.waitForPageLoadAfterButtonClick()
  188. assert 1 == 1
  189. @pytest.mark.parametrize("function", [("close"), ("closeall-0"), ("")])
  190. def test_handleWindow(function, getdriver):
  191. getdriver.browserData = MagicMock()
  192. getdriver.browserData.driver.window_handles = ["test"]
  193. getdriver.handleWindow(function=function)
  194. assert 1 == 1