找不到定位器 'xpath=//*[@id="1"]/button' 的元素
Element with locator 'xpath=//*[@id="1"]/button' not found
我正在用 Selenium2 库编写机器人框架测试,但我无法访问按钮,一页上有很多相同的按钮,所以它没有 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
但是没有找到元素。我试过单击按钮,结果相同。元素是:
<button class="add-to-cart" name="add" data-id="1">Add Course</button>
谁能帮我看看我做错了什么?
如果有错误,能否提供详细信息?
robot 中最好的一点是您无需为 Id、xpath 提及定位器类型
替换为下面
单击元素 (//button[text()="Add Course"])[1]
你能试试这个吗
xpath=//button[@data-id="1"]
问题是您正在测试的页面使用 javascript 填充页面,但您的测试试图在 javascript 完成 运行 之前单击按钮。您需要等待元素才能点击它。
这个有效:
wait until page contains element //button[@data-id='1']
click element //button[@data-id='1']
如果您对 "add-to-cart" 元素感兴趣,您可以按 class 的所有元素进行过滤,然后 select 感兴趣的元素(如数组)。
Click Button xpath=(//button[@class="add-to-cart"])[1]
...
Click Button xpath=(//button[@class="add-to-cart"])[n]
正如很少有人提到的那样,当您有更多具有相同 class 或 id 的元素时,您应该使用
来区分它们
(//button[@data-id='1'])[1]
(//button[@data-id='1'])[2]
等等,但是在Robot framework中记得要在前面使用xpath=
这样framework才能识别xpath
Click Element xpath=(//button[@data-id='1'])[1]
如果计时有问题并且您的组件没有足够快地渲染,我发现使用下面的代码比等待页面包含元素更有用,根据我的经验,它更快,更成功
Wait Until Keyword Succeeds 3x 2 seconds
... Element Should Not Be Visible xpath=//div...
我正在用 Selenium2 库编写机器人框架测试,但我无法访问按钮,一页上有很多相同的按钮,所以它没有 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
但是没有找到元素。我试过单击按钮,结果相同。元素是:
<button class="add-to-cart" name="add" data-id="1">Add Course</button>
谁能帮我看看我做错了什么?
如果有错误,能否提供详细信息?
robot 中最好的一点是您无需为 Id、xpath 提及定位器类型
替换为下面
单击元素 (//button[text()="Add Course"])[1]
你能试试这个吗
xpath=//button[@data-id="1"]
问题是您正在测试的页面使用 javascript 填充页面,但您的测试试图在 javascript 完成 运行 之前单击按钮。您需要等待元素才能点击它。
这个有效:
wait until page contains element //button[@data-id='1']
click element //button[@data-id='1']
如果您对 "add-to-cart" 元素感兴趣,您可以按 class 的所有元素进行过滤,然后 select 感兴趣的元素(如数组)。
Click Button xpath=(//button[@class="add-to-cart"])[1]
...
Click Button xpath=(//button[@class="add-to-cart"])[n]
正如很少有人提到的那样,当您有更多具有相同 class 或 id 的元素时,您应该使用
来区分它们(//button[@data-id='1'])[1]
(//button[@data-id='1'])[2]
等等,但是在Robot framework中记得要在前面使用xpath=
这样framework才能识别xpath
Click Element xpath=(//button[@data-id='1'])[1]
如果计时有问题并且您的组件没有足够快地渲染,我发现使用下面的代码比等待页面包含元素更有用,根据我的经验,它更快,更成功
Wait Until Keyword Succeeds 3x 2 seconds
... Element Should Not Be Visible xpath=//div...