0

我正在使用robotframework 和selenium2library 测试一个extjs Web 应用程序,但是我找不到一些HTML 元素,因为它们被分配了一个动态ID。

例如: selenium2library 找不到一个按钮,其中 html 代码如下:

<button type="button" id="ext-gen56" class=" x-btn-text silk-add">create vm</button>

我曾尝试使用详细的 XPath 和 css 表达式,但它们不起作用。如何处理这个问题?任何帮助,将不胜感激。

我使用的工具是用于自动 Web 应用程序测试的 robotsframework 和 selenium2library。

Parts of my test script:

 // filename is A.txt
 //this is  a resource file including keywords which are used by testcase file 
*** Keywords *** 
open vmmanager page
    [Timeout]
    click element    xpath=//table[3]/tbody/tr[2]/td[2]/em/button

create vm
    [Arguments]    ${vm_name}    ${input_description}
    click element    xpath=//table[3]/tbody/tr[2]/td[2]/em/button
    click element    xpath=//td[2]/table/tbody/tr[2]/td[2]/em/button
    click link    xpath=//tbody/tr/td[5]/div/a
    click link    xpath=//tbody/tr/td[7]/div/a
    input text    xpath=//div/div/input    ${vm_name}
    click image    xpath=//div/div/img
    click element    xpath=//div[22]/div/div
    click image    xpath=//div[3]/div/div/img
    click element    xpath=//div[19]/div/div

name is null
    alert should be present    ${expect}
    click button    xpath=//div[2]/div/div/div/div/table/tbody/tr/td/em/button
    click button    xpath=//td[5]/table/tbody/tr[2]/td[2]/em/button

contact engineer
    alert should be present    
    click button    ext-gen311

//filename is B.txt
//this is testcase file
*** Settings ***
Resource       fiel A.txt   

*** Test Cases ***
VC_VM_01
    open vmmanager page
    create vm    ${empty}    description
    name is null

VC_VM_03
    open vmmanager page
    create vm    valentine    day
    contact engineer
4

3 回答 3

0

我只是想知道如何设置静态ID。如果您无权访问应用程序代码,我会要求开发人员为组件分配静态 ID。- 这将是恕我直言最简单的解决方案。

生成的 id 通常意味着没有人关心它们。

于 2012-02-26T07:11:42.237 回答
0

如果没有 ID,您可以使用 Sahi 自动化框架中的 _near 和 _under 进行测试......我正在使用它,它的开源......有耐心尝试不同的方法来识别元素......它很酷而且很好......

于 2012-07-10T18:05:07.423 回答
0

大多数元素上都会出现文本。

xpath=//button[contains(text(), 'create vm')]

一个通用的方法将是

xpath=//*[contains(text(), 'create vm')]
于 2019-02-27T07:22:53.363 回答