RobotFramework:未找到带有定位器的链接/列表
Posted
技术标签:
【中文标题】RobotFramework:未找到带有定位器的链接/列表【英文标题】:RobotFramework: Link/List with locator not found 【发布时间】:2021-01-22 20:04:40 【问题描述】:我正在使用 Selenium 库研究 Robot Framework,但我不知道如何从下一个下拉列表中删除“kw”元素:
我尝试使用 xpath:
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
MyTest
Create Webdriver Chrome executable_path=chromedriver.exe
Open Browser http://127.0.0.1:85/ Chrome
Sleep 10
Click Link xpath=//body/div[@id='react-entry-point']/div[@id='_dash-global-error-container']/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/span[1]
但它不起作用。我得到:
Link with locator 'xpath=//body/div[@id='react-entry-point']/div[@id='_dash-global-error-container']/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/span[1]' not found.
我还尝试通过 List by Value 而不是 Click Link 访问此元素:
Unselect From List by Value xpath=//body/div[@id='react-entry-point']/div[@id='_dash-global-error-container']/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/span[1]
但我收到一个错误:
List with locator 'xpath=//body/div[@id='react-entry-point']/div[@id='_dash-global-error-container']/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/span[1]' not found.
这是下拉菜单的 html 代码:
<div style="display: inline-block; height: 20px; width: 300px; margin-left: 25px;" xpath="1"><div id="Type_id" class="dash-dropdown"><div class="Select has-value is-clearable is-searchable Select--multi"><div class="Select-control"><div class="Select-multi-value-wrapper" id="react-select-2--value"><div class="Select-value"><span class="Select-value-icon" aria-hidden="true">×</span><span class="Select-value-label" role="option" aria-selected="true" id="react-select-2--value-0">kw<span class="Select-aria-only"> </span></span></div><div class="Select-value"><span class="Select-value-icon" aria-hidden="true">×</span><span class="Select-value-label" role="option" aria-selected="true" id="react-select-2--value-1">teardown<span class="Select-aria-only"> </span></span></div><div class="Select-value"><span class="Select-value-icon" aria-hidden="true">×</span><span class="Select-value-label" role="option" aria-selected="true" id="react-select-2--value-2">setup<span class="Select-aria-only"> </span></span></div><div class="Select-input" style="display: inline-block;"><input id="Type_id" aria-activedescendant="react-select-2--value" aria-expanded="false" aria-haspopup="false" aria-owns="" role="combobox" value="" style="box-sizing: content-box; width: 5px;"><div style="position: absolute; top: 0px; left: 0px; visibility: hidden; height: 0px; overflow: scroll; white-space: pre; font-size: 15px; font-family: "Open Sans", HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 400; font-style: normal; letter-spacing: normal; text-transform: none;"></div></div></div><span aria-label="Clear all" class="Select-clear-zone" title="Clear all"><span class="Select-clear">×</span></span><span class="Select-arrow-zone"><span class="Select-arrow"></span></span></div></div></div></div>
这里是完整 HTML 代码的链接: https://jsfiddle.net/illuminato/u2j6wbh/
【问题讨论】:
【参考方案1】:使用以下 xpath。
//span[text()='kw']
或
//span[contains(.,'kw')]
或
//div[@class='Select-value']//span[contains(.,'kw')]
【讨论】:
谢谢。但这对我不起作用。我得到Link with locator 'xpath://span[text()='kw']' not found。 @illuminates :您是否也尝试过其他两个选项? 如果其他两个选项你得到相同的错误那么元素必须在iframe
内,如果是这样,你需要切换到 iframe
才能访问该元素。
我也尝试了其他选项。我不认为 HTML 代码有 iframe。我已经更新了带有完整 HTML 代码链接的帖子。
@illuminates :这真的很奇怪!所有三个xpaths
都可以正常使用您共享的 html。不知道为什么它不能在你的最后工作。【参考方案2】:
你可以在 kw span 旁边找到 X span 的定位器:
//span[contains(text(), 'kw')]//preceding::span
【讨论】:
P.S:我无法从 UI 中点击那个按钮,而且工具有限,所以如果你想做严肃的事情,我的建议是改变它 谢谢,但我仍然遇到同样的错误:Link with locator 'xpath://span[contains(text(), 'kw')]//preceding::span' not found.
是的,因为工具箱在 iframe 内,您需要在执行操作之前切换到框架
我认为 HTML 代码没有 iframe。但解决方案是//span[text()='kw']/../*[@class="Select-value-icon"]
【参考方案3】:
终于得到了solution:
Click Element //span[text()='kw']/../*[@class="Select-value-icon"]
【讨论】:
以上是关于RobotFramework:未找到带有定位器的链接/列表的主要内容,如果未能解决你的问题,请参考以下文章
Robotframework + Appium 之常用元素定位方法