5

我有一个我正在尝试为其编写硒测试的网络应用程序,但我遇到了 Chrome 驱动程序的问题。有一个向导类型的界面,用户可以使用它来填写表格。有一个按钮可以添加带有几个设置的行。我已经用黑色概述了这一点。蓝色矩形显示按钮的可点击区域。这个矩形的中间没有与其他任何东西重叠。

在此处输入图像描述

问题是有一个巨大的 div 包含整个屏幕,Chrome 说这个 div 会得到点击。那么,我该如何解决呢?由于周围有一个 div 标签,因此我无法单击此按钮似乎不是正确的行为。如果这是正确的行为,几乎没有什么是可点击的。

在此处输入图像描述

我要点击的按钮是这样的:

 <button id="add-thisSetting" class="btn">Add This Setting</button>

周围的div是:

 <div class="application-tour-overlay"></div>

这是一个简短的 html 源代码:

<div id="editBase">
  <div class="edit-buttons application_edit_controls">
    <div id="thingamajigSettings" class="application_thingamajig_settings">
      <div id="thisSetting" class="application_thissetting application-tour-spotlit">
        <div class="control-title">This Setting
        </div>
        <div class="thisSetting-block">
          <div>
            <div class="scrolling-table" style="overflow-y: auto; overflow-x: hidden;">
              <div class="add-thisSetting-bar">
                <div class="btn-group pull-right">
                  <button id="add-thisSetting" class="btn">Add This Setting</button>
                  <button class="btn dropdown-toggle" data-toggle="dropdown">
                    <ul class="dropdown-menu">
                </div>
              </div>
            </div>
          </div>
          <div id="rulescontainer" class="application_rule_view">
            <div id="settings">
              <div class="edit-buttons application_edit_controls">
              </div>
            </div>
          </div>
          <div id="app_notify_manager" class="application_notify_manager">
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="identityOfMe-widget-ft"></div>
<div id="jstree-marker" style="display: none;"></div>
<div class="application_tour">
  <div class="application-tour-overlay"></div>
4

4 回答 4

1

有时开发人员使用全屏“div”来跟踪操作,但当“div”显示在顶部时,Chrome webdriver 无法单击任何内容。所以你可以使用“z-index”属性来隐藏它。

C#中有一个例子: ((IJavaScriptExecutor)this.Driver).ExecuteScript("arguments[0].setAttribute('style', 'z-index: -1')", popup);

于 2014-11-14T03:34:33.650 回答
0

尝试使用 fire_event("click")而不是click......它帮助了我。

于 2013-06-25T12:57:23.720 回答
0

在这种情况下(糟糕的网站设计),我最后的手段之一是诉诸 DOM 的 javascript 修改:

driver.execute_script(<<-javascript)
  var overlay = document.getElementById("modal_overlay");
  overlay.parentNode.removeChild(overlay);
javascript

对于更彻底的故障排除,您可以查看我之前对一般情况的类似问题的回答:https ://stackoverflow.com/a/23705280/234593

于 2014-05-23T18:17:22.413 回答
0

[here] 有一个类似的问题(Debugging "Element is not clickable at point" 错误),其中包含很多信息。我遇到了类似的问题,我无法单击模式上已经在 DOM 中但隐藏的按钮。尝试多次调用此函数,以查看按钮的位置是否从 JS 更改。

public void PrintLocation()
{
Point point = driver.findElement(By.id("add-thisSetting")).getLocation();
System.out.println("X="+point.x+"Y="+point.y");
}

如果是这种情况,那么您可以通过休眠直到按钮停止移动来修复它。

Thread.sleep(500);
于 2014-05-23T17:36:23.163 回答