c# - 无法使用 NUnit、C# 将 Selenium 元素滚动到 View : (34).

标签 c# html css selenium nunit

尝试单击 <a> 时从标题中获取错误回归测试脚本中的标记。我在这里研究了这个问题:Selenium::WebDriver::Error::MoveTargetOutOfBoundsError: Element cannot be scrolled into view:[object HTMLSpanElement]还有这里:https://groups.google.com/forum/#!msg/webdriver/R2jwSWrIK44/RaCLRPlKIWEJ但我不明白问题的根本原因。

我试过使用 By.jQuery、By.Id、By.Css、By.Xpath 以及按索引选择,但总是出现相同的错误。相关代码如下:

HTML:

<div id="divTabs">
    <a id="tabECheck" target="#divECheck">eCheck</a>
    <a id="tabAceComments" target="#divAceComments">Ace Comments</a>
    <a id="tabReviewComments" target="#divReviewComments">Review Comments</a>
    <a id="tabReviewHistory" target="#divReviewHistory">Review History</a>
</div>

CSS:

#divTabs{
    writing-mode: tb-rl; 
    -webkit-transform: rotate(90deg);   
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    position: absolute;
    width: 27px; 
    padding: 0px; 
    height: auto;
    display: table-row;
    margin-bottom: 10px;
}

#divTabs a
{
    border: 1px solid #CCC;
    padding: 3px;
    white-space: nowrap;
    cursor: pointer;
    color: #3966BF;
    display: table-cell;
    background-color: #FFF;
}

C#:

element = driver.FindElement(By.Id("tabReviewComments"));
element.Click();

如您所见,我正在尝试单击第 3 个 <a> ID 为“tabReviewComments”的标签。但是,如果我有脚本,请单击第一个 <a> id 为“tabECheck”的标签,它的工作原理是我没有收到“无法将元素滚动到 View 中”错误,元素被单击,脚本移过该行。遗憾的是,我需要点击第三个 <a>标签。关于移动 <a id="tabReviewComments" target="#divReviewComments">Review Comments</a> 的任何想法到顶部?

谢谢!

最佳答案

就浏览器而言,该元素实际上可能是不可点击的,这可能是因为

  • 它的位置在屏幕外(负空间)
  • 它在另一个元素后面(比如模态叠加层之类的)
  • 它的大小为 0(有时 css 可能很有趣,浏览器可能会计算与您看到的大小不同的大小)
  • 系统中的 UI 错误,导致该元素因其他原因不可见

关于c# - 无法使用 NUnit、C# 将 Selenium 元素滚动到 View : (34).,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16087961/

相关文章:

css - 调整屏幕大小时如何使 block 向左移动?

html - 使用 :after property 后无法为按钮设置动画

c# - 如果需要,确定用户是否可以获得管理员权限

html - 如何使用纯CSS将三 Angular 形更改为向上箭头

css - 如何使 Bootstrap 表单居中

html - 三张图片的绝对定位

html - 悬停另一个时显示隐藏的元素

C# 如何将数字格式化为带有前缀 '0x' 的十六进制

c# - 数组值到列表框

c# - C# 交互窗口可以与我的代码交互吗?