[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 仅用于 &lt;button&gt; 类型的元素 - 您的目标是 &lt;span&gt;。 在 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"的主要内容,如果未能解决你的问题,请参考以下文章

Python3 Robot Framework测试框架

Robot Framework:环境安装(python2)

[Python]Robot Framework中的Selenium关键字点击<a>标签内的span role="button"

Python + Robot Framework 环境搭建

pycharm下robot framework环境搭建,基于python版本3.6

Robot Framework自动化测试---第一个脚本