当 id 在机器人框架中动态时,如何找到要单击的按钮的 id

how to locate an id of the button to click when id is dynamic in robot framework

我是机器人框架的新手,学习了一些机器人框架的基础知识。当我尝试在 facebook 中创建一个新帐户时,我使用了“创建新帐户”的 id 元素,但每次打开新页面时都会生成新的 id。谁能帮助我了解如何在 id 为动态时单击按钮。

*** Settings ***

Library    SeleniumLibrary

*** Test Cases ***

facebooklogin

    open browser    https://www.facebook.com/    firefox
    maximize browser window
    set selenium timeout    10s
    click button    id:u_0_d_si

错误消息:未找到带有定位器 'id:u_0_d_si' 的按钮。

我发现的一个快速替代方法是您可以打开此 link:https://www.facebook.com/login/web/ 然后:

SeleniumLibrary.Wait Until Element Is Visible 
xpath://a[contains(text(),'Sign up for Facebook')]   10s        
Click Element    xpath://a[contains(text(),'Sign up for Facebook')]

只要使用适当的元素定位器策略,因为你已经使用了元素的id属性,但是如果你每次刷新页面它都会改变,这意味着id属性值是动态的,你可以去文本的地方每次都唯一地标识它的元素。

*** Test Cases ***
Create new facebook account

    Open Browser    https://www.facebook.com/    firefox
    Maximize Browser Window
    Set Selenium Timeout    10s
    Click Element    xpath:.//a[text()="Create New Account"]

有时这对动态元素非常有效:

${element1}=  Asign Id To Element  contains...etc
Execute Javascript   arguments[0].click();   Arguments   ${element1}