我创建了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
错误。
答案 0 :(得分:1)
click element关键字(以及所有其他关键字)依赖于Selenium2Library打开的浏览器。由于您使用python selenium模块而不是机器人库打开它,因此Selenium2Library关键字不了解浏览器。
如果您需要为Selenium2Library和python代码使用相同的浏览器,最好的方法是使用Selenium2Library打开浏览器,然后从中获取驱动程序引用以在python中使用它。
假设您已使用open browser或create 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