[Python]Robot Framework中的Selenium关键字点击<a>标签内的span role="button"
Posted
技术标签:
【中文标题】[Python]Robot Framework中的Selenium关键字点击<a>标签内的span role="button"【英文标题】:[Python]Selenium keyword in Robot Framework to click span role="button" inside <a> tag 【发布时间】:2021-07-17 15:02:39 【问题描述】:我想自动化一个下载场景。
这是网页的sn-p/部分:
<div id="widget-header-1" class="right-header">
<a id="Edit-icon-1" href="#" class="widget-button">
<span class="ui-icon ui-icon-pencil ui-state-default" role="button" title="Edit"></span></a><a id="Email-icon-1" href="#" class="widget-button">
<span class="ui-icon ui-icon-mail-closed ui-state-default" role="button" title="Email"></span>
</a>
<a id="Download-icon-1" href="#" class="widget-button">
<span class="ui-icon ui-icon-arrowthickstop-1-s ui-state-default" role="button" title="Download">
</span>
</a>
<a href="/dashboard_widgets/1" class="widget-button">
<span class="ui-icon ui-icon-zoomin ui-state-default" role="button" title="Zoom In">
</span>
</a>
<a href="#" class="widget-button"><span class="ui-icon ui-icon-trash ui-state-default" role="button" title="Delete">
</span>
</a>
</div>
在我的机器人框架代码中,我使用了:
Click Button //span[@class="ui-icon.ui-icon-arrowthickstop-1-s.ui-state-default"]
但是当我在 RIDE 上运行它时,我得到了错误:。
Button with locator '//span[@class="ui-icon.ui-icon-arrowthickstop-1-s.ui-state-default"]' not found.
对//*span
使用相同会引发错误:
The string '//*span[@class="ui-icon.ui-icon-arrowthickstop-1-s.ui-state-default"]' is not a valid XPath expression.
我也尝试过使用以下 xpath,但没有运气:
//*[@id="Download-icon-1"]/span
给出错误Button with locator '//*[@id="Download-icon-1"]/span' not found.
//a[@class="ui-icon.ui-icon-arrowthickstop-1-s.ui-state-default"]/span
给出错误:Button with locator '//a[@class="ui-icon.ui-icon-arrowthickstop-1-s.ui-state-default"]/span' not found.
即使我使用Click Link
,我也会看到一个错误:
Link with locator '//a[@class="ui-icon.ui-icon-arrowthickstop-1-s.ui-state-default"]' not found.
【问题讨论】:
【参考方案1】:Click Button
仅用于 <button>
类型的元素 - 您的目标是 <span>
。
在 html 源代码中,您显示的类值是 "ui-icon ui-icon-arrowthickstop-1-s ui-state-default"
,但是您已经用点更改了每个空格字符 - 这不起作用。//*span
确实是一个无效的 xpath,因此错误 - 一个星号本身是一个节点名称(“任何类型”),它不用作(通配符?)前缀。
用这个改变它:
Click Element //span[@class="ui-icon ui-icon-arrowthickstop-1-s ui-state-default"]
,或者:
Click Element //*[@id="Download-icon-1"]/span
,只要这些类/id 值不是在重新加载时随机生成的,这两个调用应该可以工作。
总的来说,Click Element
不关心目标元素的类型 - 它只是点击,与 Click Button
相反。
【讨论】:
以上是关于[Python]Robot Framework中的Selenium关键字点击<a>标签内的span role="button"的主要内容,如果未能解决你的问题,请参考以下文章
[Python]Robot Framework中的Selenium关键字点击<a>标签内的span role="button"