当元素没有 id 或名称时,如何在机器人框架中使用 Click Element 功能?

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

我目前正在机器人框架中使用 Selenium2Library 来自动化一些 Web 测试。目前,我在使用“单击元素”功能自动单击登录按钮时遇到问题。

这是我想使用的元素:

<a class="transparentBtn loginLink ng-scope" ng-click="commonService.gigyaRaasLogin()" translate="BTN_ADMIN_LOGIN_WATCHLIST">LOGIN</a>

如果我从控制台复制,这就是 xpath:

//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a

如果我想单击此元素,我很难找到要使用的定位器。

这些是我迄今为止尝试过的一些事情:

  1. Click Element  css=a.loginLink
  2. Click Element  link=LOGIN
robotframework selenium2library
4个回答
9
投票

尝试找到唯一的CSS(1个匹配节点)或尝试这个

Wait Until Element Is Visible   xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a      10
Click Element    xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a

9
投票

我建议更加灵活一点。如果您在定义灵活和独特之间找到平衡,那么这是一个好方法。否则,最小的站点更改都会破坏您的测试。

以下示例应与前面的示例匹配:

  • 匹配任何包含登录文本的链接

    Click Element       //a[contains(text(),'LOGIN')]
    
  • 匹配任何包含 LOGIN 文本的元素

    Click Element       //*[contains(text(),'LOGIN')]
    
  • 匹配类属性等于“transparentBtn loginLink ng-scope”的任何元素

    Click Element       //a[@class="transparentBtn loginLink ng-scope"]
    
  • 可以同时查看多个属性

    Click Element       //a[@class='transparentBtn loginLink ng-scope' and @ng-click='commonService.gigyaRaasLogin()']
    
  • 您可以使用 contains() 来检查字符串是否是类属性的一部分

    Click Element       //a[contains(@class,'loginLink')]
    

0
投票

为了回答标题中的问题,Selenium2Library 支持许多不同的定位器。最具表现力的是 xpath,它可以用来查找几乎任何东西。请参阅Selenium2Library 文档中的定位或指定元素部分。

就您而言,如果您单击链接,则

click link  link=LOGIN
应该可以工作。如果没有,则可能是链接位于 iframe 中,或者可能被 css 隐藏了(某些框架(例如 Angular 和 React)会隐藏元素并用自己的东西替换它们)


0
投票

点击机器人框架中的按钮:-

Press keys   Locator_here   ENTER

它会起作用------

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