使用 Robot Framework/Selenium (Python) 创建并打开 URL 以通过基本身份验证登录网站

问题描述 投票:0回答:1

我正在尝试使用 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
python selenium-webdriver robotframework basic-authentication
1个回答
0
投票

您将定位器提供给包含链接的元素,而不是将链接本身作为字符串提供。您应该获取

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

© www.soinside.com 2019 - 2024. All rights reserved.