点击Selenium按钮

时间:2015-07-27 17:11:57

标签: ruby selenium rspec

这个问题是我上一个问题的延续(可以找到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标签(这将使事情变得如此简单)。我尝试运行脚本时遇到的错误是&#34;无法找到元素&#34; // td [class =&#39; signbuts&#39;]&#34; &#34;结果,它超时了。

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:1)

您的示例代码没有td,其姓名为signbuts,从错误中可以看出。

该班有一个button!但是,按类定位元素时,应使用定位器&#34; classname&#34;。类似的东西:

@ie_driver.find_element(:classname, "signbuts")

注意我不熟悉Ruby,因此语法可能已关闭。

答案 1 :(得分:1)

找出问题所在。不知何故,当我查看页面源时,该按钮的类名是&#34; signbut s &#34;。当我这样做时:

puts @ie_driver.page_source

对于该按钮,它返回了一个类名&#34; signbut&#34;。我不知道页面来源为何或如何改变但确实如此。只要我使用新的类名运行它就运行得很好。