【发布时间】:2021-06-13 20:01:41
【问题描述】:
我正在使用下面的代码,希望它能找到可见按钮
element = @browser.button(text: 'Search', visible: true)
而且它没有找到可见按钮。但下面的代码定位可见按钮
element = @browser.element(xpath: "//button[text()='Search']", visible: true)
这是预期的吗?还是有问题?
HTML 代码
<button type="button" title="" data-uid="DSDL_U1" data-action="search" data-viewitemid="DSDL_U1_-1_L21" triggeredactionhandler="search" buttonprocesstarget="CUSTOMER_IND_QUICK_SEARCH_BY_ID_NAME" class="icon icon-detail-search" id="DSDL_U1_-1_L21_L_1_C" tabindex="10047">Search</button>
@贾斯汀
回答你的问题
@browser.buttons(text: 'Search').count
返回 6
@browser.buttons(text: 'Search', visible: true).count
返回 2
现在我检查了
@browser.buttons(text: 'Search', visible: true)[0].present?
返回真
但是如果我点击,那么它会返回
element click intercepted: Element <button tabindex="5" type="button" class="icon icon-detail-url" id="U1_-1_L5_L_1_C" style="outline: orangered solid 2px !important; background-color: rgb(255, 255, 255);">...</button> is not clickable at point (43, 258). Other element would receive the click: <div id="homePageSearch" class="searchGrpContainer homePageSearch populated" data-renderer="menu" data-headertype="button" data-style="tree" data-zone="overlay">...</div>
(Session info: chrome=89.0.4389.90)
但是如果写
@browser.buttons(text: 'Search',visible: true)[1].present?
这返回真,但如果触发点击,那么它点击。
你问我两个元素的html
@browser.buttons(text: 'Search',visible: true)[0].html
返回
<button tabindex="5" type="button" class="icon icon-detail-url" id="U1_-1_L5_L_1_C" style="outline: orangered solid 2px !important; background-color: rgb(255, 255, 255);"><span>Search</span></button>
第二个元素
@browser.buttons(text: 'Search',visible: true)[1].html
返回
<button type="button" title="" data-uid="DSDL_U1" data-action="search" data-viewitemid="DSDL_U1_-1_L21" triggeredactionhandler="search" buttonprocesstarget="CUSTOMER_IND_QSEARCH_PARTYID_ALTCUSTID" class="icon icon-detail-search" id="DSDL_U1_-1_L21_L_5_C" tabindex="10047">Search</button>
当我点击第一个搜索按钮时,它会在同一个 html 中打开另一个窗口,在那个新窗口中,另一个搜索按钮在那里,所以它匹配第一个搜索按钮(我点击打开)和第二个搜索按钮是在我即将点击的新窗口中。但程序检测到两个搜索按钮可见。
【问题讨论】:
-
什么是html?元素是实际的按钮标签还是输入类型的按钮?
-
@titusfortner 我已经更新了问题中的 HTML 元素。
-
对元素使用文本定位器将找到最匹配的文本节点。检查您找到的标签名称,它可能是父元素。
-
@titusfortner 我已经向你展示了我想要点击的元素。它有一个按钮标签和文本搜索,我给出了可见参数,但它没有定位可见元素并且它定位第一个元素。
-
@JustinKo 我已经用完整的细节更新了这个问题。