【问题标题】:Keyword 'Capture Page Screenshot' could not be run on failure: Cannot access execution context失败时无法运行关键字“捕获页面屏幕截图”:无法访问执行上下文
【发布时间】:2018-03-05 13:21:15
【问题描述】:

如何在我的程序中访问执行上下文以捕获屏幕截图? 以下程序将失败,因为包含文本不存在。

from ExtendedSelenium2Library import ExtendedSelenium2Library
import logging

class firsttest():


    def googleit(self):
        self.use_url = 'https://google.ca'
        self.use_browser = 'chrome'

        s2l = ExtendedSelenium2Library()
        s2l.open_browser(self.use_url, self.use_browser)
        s2l.maximize_browser_window()

        try:
            # Should fail
            s2l.page_should_contain('this text does not exist on page')
        except:
            logger.debug('failed')


runit = firsttest()
runit.googleit()

当我运行这个程序时得到警告

WARNING - Keyword 'Capture Page Screenshot' could not be run on failure: Cannot access execution context

【问题讨论】:

    标签: python selenium selenium-webdriver robotframework selenium2library


    【解决方案1】:

    你必须使用机器人来执行测试,你不能只是实例化类并期望它们工作。它们被设计为仅在由机器人运行时工作。

    如果你需要用python写测试,不需要ExtendedSeleniumLilbrary,直接从python调用selenium API即可。

    【讨论】:

      【解决方案2】:

      问题可能源于您没有为 Robot Framework 编写正确格式的 Python 库。

      这是在 Robot Framework 中编写 Python 代码的正确格式:

      from robot.libraries.BuiltIn import BuiltIn
      
      class ClickAnElement(object):
          def __init__(self):
              self.selenium_lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
      
          def click_an_element(self, locator):
              BuiltIn().click_element(locator)
      

      这是如何工作的(我相信)在 Robot Framework 中,您在 *** Settings *** 部分中使用 Library ClickAnElement.py 调用此库。这将激活__init__ 功能。然后,您可以像调用 Selenium2Library 中的关键字一样调用关键字。因此,如果我以正确的格式重新编写您发布的代码,它将如下所示:

      from robot.libraries.BuiltIn import BuiltIn
      import logging
      
      class FirstTest():
          def __init__(self):
              self.selenium_lib = BuiltIn().get_library_instance('ExtendedSelenium2Library')
      
          def google_it(self):
              self.use_url = 'https://google.ca'
              self.use_browser = 'chrome'
              s2l = ExtendedSelenium2Library()
              s2l.open_browser(self.use_url, self.use_browser)
              s2l.maximize_browser_window()
              try:
                  # Should fail
                  s2l.page_should_contain('this text does not exist on page')
              except:
                  logger.debug('failed')
      

      然后,我的 .robot 文件将如下所示:

      *** Settings ***
      Library     FirstTest
      
      *** Test Cases ***
      Test Google It
          Google It
      

      您正在编写一个 Python 文件以在 Robot Framework 之外工作。如果您希望它在 Robot Framework 内部工作,您需要使用正确的库格式。

      请注意,我只是在格式化您的代码,而不是对其进行测试。我不能,因为我没有你的应用程序来测试它。

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 1970-01-01
        • 2021-07-09
        • 2023-01-27
        • 2015-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-02
        相关资源
        最近更新 更多