如何在程序中访问执行上下文以捕获屏幕截图? 由于包含文本不存在,以下程序将失败。
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
答案 0 :(得分:3)
你必须使用机器人来执行测试,你不能只是实例化类并期望它们工作。它们仅在机器人运行时才能工作。
如果你需要在python中编写测试,则不需要使用ExtendedSeleniumLilbrary
,你可以直接从python调用selenium API。
答案 1 :(得分:0)
问题可能源于您没有以正确的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的内部工作,则需要使用正确的库格式。
请注意,我只是格式化您的代码,而不是对其进行测试。我不能,因为我没有你的应用程序来测试它。