如何编写由多个Web驱动程序执行的通用selenium测试

susanml
susanml
订阅者
459
文章
0
粉丝
测试交流2167字数 236阅读0分47秒阅读模式
摘要我对python和selenium测试都是新手,我遇到了一个可能有标准解决方案的问题,但我找不到它。 假设我正在做的项目是支持。。。

我对python和selenium测试都是新手,我遇到了一个可能有标准解决方案的问题,但我找不到它。

假设我正在做的项目是支持Google Chrome和Firefox。为每个受支持的浏览器编写单独的测试似乎是多余的,所以我一直在尝试编写通用测试方法,这些方法将使用不同的Web驱动程序单独执行。文章源自玩技e族-https://www.playezu.com/179397.html

我目前的做法如下文章源自玩技e族-https://www.playezu.com/179397.html

from selenium import webdriver
def construct_chrome_webdriver () :
driver = webdriver.Chrome()
driver.implicitly_wait(10)
return driver
def construct_firefox_webdriver () :
driver = webdriver.Firefox()
driver.implicitly_wait(10)
return driver
def actual_test_method_implementation (construct_webdriver) :
webdriver = construct_webdriver()
webdriver.get('http://localhost:3333')
# do some testing
def test_method_that_is_executed_by_pytest () :
actual_test_method_implementation(construct_chrome_webdriver)
actual_test_method_implementation(construct_firefox_webdriver)

使用命令执行测试 Pytest文件名。PY公司文章源自玩技e族-https://www.playezu.com/179397.html

这种方法需要大量的样板文件——每个测试有两种方法。有没有更好的方法来实现这一点?文章源自玩技e族-https://www.playezu.com/179397.html 文章源自玩技e族-https://www.playezu.com/179397.html

 
评论  2  访客  2
    • Kamil Bęben
      Kamil Bęben 9

      好吧,我已经找到了一个更好的解决方案,但我仍然不确定这是否是最好的选择,所以我在几天内不会将这个答案标记为可接受的答案。
      conftest。p
      import pytest

      def pytest_addoption (parser):
      parser.addoption("–Web驱动程序", action="store", default="chrome", help="chrome | firefox")

      @pytest.fixture
      def Web驱动程序u名称 (request) :
      return request.config.getoption(‘–Web驱动程序’)

      测试用例。PY公司
      from selenium import Web驱动程序

      def 构造Web驱动程序 (Web驱动程序u名称) :

      if Web驱动程序u名称 == ‘firefox’ :
      driver = Web驱动程序.Firefox()
      else :
      driver = Web驱动程序.Chrome() # chrome is also the default choice

      # further Web驱动程序 initialization
      driver.implicitly_wait(10)
      driver.get(‘http://localhost:3333’)

      return driver

      test_文件。py公司
      from test_utils import 构造Web驱动程序

      def test_method_that_is_executed_by_pytest (Web驱动程序u名称) :
      print(‘Web驱动程序u名称 = ‘ + Web驱动程序u名称)
      Web驱动程序 = 构造Web驱动程序(Web驱动程序u名称)
      # do some testing

      测试调用
      pytest filename.py –Web驱动程序=chrome
      pytest filename.py –Web驱动程序=firefox

      解释
      conftest文件。py和固定装置
      TLD的R;
      在里面 conftest。p 我定义了一个测试参数,名为 Web驱动程序 这是在从命令行调用测试时设置的。
      已调用夹具 Web驱动程序u名称 将注入pytest管理的每个测试方法。
      构造Web驱动程序 函数将根据 Web驱动程序u名称 是
      赞成的意见
      不需要太多样板代码-每个测试只需要一种方法
      欺骗
      这仍然不是一种标准化的做事方式,我觉得我在重新发明轮子。

      • Frenchy
        Frenchy 9

        为了简化调用,可以像这样直接调用驱动程序:(使用getattr)
        from selenium imp或t webdriver

        driver = getattr(webdriver, "Firefox")(options=youroptions, executable_path="pathgeckodriver.exe" )


        driver = getattr(webdriver, "Chrome")(options=options, executable_path="pathchromedriver.exe" )

        getattr(webdriver, "Chrome")(options=options, executable_path="pathchromedriver.exe" )

        相当于
        webdriver.Chrome(options=options, executable_path="pathchromedriver.exe" )

        f或 nav in ["Chrome", "Firefox"]:
        driver = getattr(webdriver, nav)
        driver.implicitly_wait(10)
        driver.get(‘http://localhost:3333’)

      匿名

      发表评论

      匿名网友
      确定

      拖动滑块以完成验证