运行Robot框架脚本

时间:2017-12-14 13:17:39

标签: python robotframework

我创建了Test.py文件,其中包含一些函数,并在sample.robot文件中使用这些函数名称作为关键字。

例:   - Test.py

def Launch_URL(url):
    driver.get(url)

def article(publication):   
    do something here

Sample.robot

Library  Selenium2Library
Library  Test.py

*** Test Cases ****
 Open app     
     Launch URL   "https://stackoverflow.com"
     article       something
     Click Element  xpath=/html/body/div[1]/div/div/button/i

除了.py中的派生关键字外,我还想在机器人文件中使用内置的关键字Click Element。当我运行上述脚本时,No Browser Open关键字会导致Click Element错误。

1 个答案:

答案 0 :(得分:1)

click element关键字(以及所有其他关键字)依赖于Selenium2Library打开的浏览器。由于您使用python selenium模块而不是机器人库打开它,因此Selenium2Library关键字不了解浏览器。

如果您需要为Selenium2Library和python代码使用相同的浏览器,最好的方法是使用Selenium2Library打开浏览器,然后从中获取驱动程序引用以在python中使用它。

假设您已使用open browsercreate webdriver关键字打开浏览器,您可以在python中使用该浏览器的驱动程序,如下所示:

from robot.libraries.BuiltIn import BuiltIn
def Launch_URL(url):
    se2lib = BuiltIn().get_library_instance('Selenium2Library')
    driver = se2lib._current_browser()
    driver.get(url)

如果您不想在测试中使用open browser,并希望Launch URL成为您使用的第一个关键字,则可以从关键字中调用open_browser

def Launch_URL(url):
    se2lib = BuiltIn().get_library_instance('Selenium2Library')
    se2lib.open_browser(url, "chrome")

这是另一个类似的问题:Pass existing Webdriver object to custom Python library for Robot Framework

如果您想在python中编写既使用内置关键字又可以直接访问selenium模块的关键字,您可能需要考虑使用此page object library,它处理所有细节您。

注意:在Selenium2Library的第2版中,不可避免地使用私有方法_current_browser。 SeleniumLibrary版本3中提供了一个公共界面。请参阅github问题#882

相关问题