我正在使用Selenium2 Library编写机器人框架测试,我无法访问按钮,一个页面上有许多相同的按钮,因此它没有id。我尝试访问元素的方式:
Click Element xpath=//*[@id="1"]/button
Click Button xpath=//*[@id="1"]/button
Click Element name=add
Click Button name=add
Click Element add
Click Button add
但它找不到元素。我试过Click Button,结果相同。元素是:
<button class="add-to-cart" name="add" data-id="1">Add Course</button>
任何人都可以帮助我,我做错了什么?
答案 0 :(得分:3)
问题是您正在测试的页面使用javascript填充页面,但您的测试是在javascript完成运行之前尝试单击该按钮。您需要等待元素才能点击它。
这有效:
wait until page contains element //button[@data-id='1']
click element //button[@data-id='1']
答案 1 :(得分:1)
您是否可以提供错误详情?
机器人中最好的东西是你不需要提到Id,xpath的定位器类型
替换为以下
点击元素(//按钮[text()=&#34;添加课程&#34;])[1]
答案 2 :(得分:0)
你可以尝试一下。
xpath=//button[@data-id="1"]
答案 3 :(得分:0)
如果您对“添加到购物车”元素感兴趣,可以按类的所有元素进行过滤,然后选择感兴趣的元素(如数组)。
Click Button xpath=(//button[@class="add-to-cart"])[1]
...
Click Button xpath=(//button[@class="add-to-cart"])[n]
答案 4 :(得分:0)
很少有人提到,当您有更多具有相同类或id的元素时,应使用
进行区分(//button[@data-id='1'])[1]
(//button[@data-id='1'])[2]
等,但是在Robot框架中,请记住在使用xpath=
之前,框架才能识别xpath
Click Element xpath=(//button[@data-id='1'])[1]
如果时序存在问题,并且您的组件未能尽快渲染,我发现使用下面的代码代替“等待页面包含元素”会更有用,根据我的经验,它会更快,更成功
Wait Until Keyword Succeeds 3x 2 seconds
... Element Should Not Be Visible xpath=//div...