我正在尝试使用 Robot Framework 和 Selenium (Python) 登录基本身份验证。 这个想法是获取出现基本身份验证弹出窗口的 URL,在自定义函数中编辑 URL(包括登录数据),然后打开修改后的 URL。
Robot Framework 脚本将运行而不会失败,但不会打开基本身份验证 URL。
这是机器人框架脚本。 该 URL 指向用于测试自动化的 Playground 网站。
${link_auth}
包含基本身份验证登录的链接。
*** Settings ***
Library Selenium2Library
Library robot_test_func.py
*** Variables ***
${url} https://the-internet.herokuapp.com/
${link_auth} xpath://a[contains(text(), 'Basic Auth')]
*** Test Cases ***
login to page with basic auth
Open Browser ${url} ${browser}
basic auth login admin admin
*** Keywords ***
basic auth login
[Arguments] ${user} ${pw}
${link_auth} GENERATE BASIC AUTH URL ${link_auth} ${user} ${pw}
Go To ${link_auth}
这是导入的robot_test_func.py
try:
from robot.libraries.BuiltIn import BuiltIn
from robot.libraries.BuiltIn import _Misc
import robot.api.logger as logger
from robot.api.deco import keyword
ROBOT = False
except Exception:
ROBOT = False
@keyword("GENERATE BASIC AUTH URL")
def basicAuthURL(link, user, password):
parts_lst = link.partition("://")
link = "{}{}{}:{}@{}".format(parts_lst[0], parts_lst[1], user, password, parts_lst[2])
print(link)
return link
您将定位器提供给包含链接的元素,而不是将链接本身作为字符串提供。您应该获取
href
元素的 a
属性并将其传递给 GENERATE BASIC AUTH URL
关键字。所以你的 basic auth login
关键字应该是这样的:
basic auth login
[Arguments] ${user} ${pw}
${href} Get Element Attribute ${link_auth} href
${link_auth} GENERATE BASIC AUTH URL ${href} ${user} ${pw}
Go To ${link_auth}
旁注:如果没有特定原因使用
Selenium2Library
(不再更新),您应该更新(卸载robotframework-selenium2library
,安装robotframework-seleniumlibrary
,更改导入)到SeleniumLibrary
。