【发布时间】:2015-07-27 17:11:57
【问题描述】:
这个问题是我上一个问题的延续(可以找到here)。我现在尝试使用 Selenium 单击注销按钮的问题。继续我的上一篇文章,我正在尝试切换到一个新窗口,该窗口通过在页面中搜索注销按钮来弹出。我实际上无法让 Selenium 识别该按钮。这是我的方法:
it "can go to Ultratime", focus: true do
@ie_driver.find_element(:link, "My Resources").click
sleep 5
@ie_driver.switch_to.frame(@ie_driver.find_element(:css, 'iframe[src="https://controller.nd.edu/ultratime/insidend/"]'))
@ie_driver.find_element(:class,"single").click
@window = @ie_driver.window_handles.detect { |w|
@ie_driver.switch_to.window(w)
wait.until { @ie_driver.find_element(:xpath, "//td[class='signbuts']") }
}
@ie_driver.switch_to.window(@window)
end
以及我尝试点击的按钮的源代码:
<table class="table" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr style="height:20px">
<!--hr-->
<td class="td">
<button id="signbut" class="signbuts" title="" onblur="buttonBlur(this)"
onmouseout="buttonLeave(this)" onfocus="buttonFocus(this)"
onmouseover="buttonHover(this)" menuitem="ATW910"
onclick="signclick('W' ,'LOGOUT' ,'Logout' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'ATW' ,'910' ,'' ,'' )"></button>
</td>
<td class="td">
<button id="signbut" class="signbut" title="Leave the application"
onblur="buttonBlur(this)" onmouseout="buttonLeave(this)"
onfocus="buttonFocus(this)" onmouseover="buttonHover(this)" menuitem="ATW900"
onclick="signclick('D' ,'EXITSYS' ,'Quit' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'ATW' ,'900' ,'' ,'Leave the application' )">
</button>
</td>
</tr>
</tbody>
我展示了两个不同的按钮,只是为了表明我不能只查找按钮 id 标签(这会使事情变得更容易)。当我尝试运行我的脚本时出现的错误是“无法找到元素”//td[class='signbuts']“”,因此它超时了。
任何帮助将不胜感激!
【问题讨论】:
-
在一个页面上多次使用相同的 id,通常被认为是缺陷。与开发人员聊天。
-
我不能,它是由第三方公司开发的。我只需要用我所拥有的来弥补。看过 HTML 代码的其他人都同意,为元素使用非唯一 id 是非常愚蠢的。