当前位置: 首页 > 面试题库 >

如何使用C#使用Selenium WebDriver滚动到元素

孔星宇
2023-03-14
问题内容

如何使Selenium WebDriver滚动到特定元素以使其显示在屏幕上。我尝试了很多不同的选择,但是没有运气。这在c#绑定中不起作用吗?

我可以使它跳到特定的位置,((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 150)"); 但是我希望能够将其发送到不同的元素,而不必每次都给出确切的位置。

public IWebElement Example { get { return Driver.FindElement(By.Id("123456")); } }

例1)
((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", Example);

例2)
((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollBy(Example.Location.X", "Example.Location.Y - 100)");

当我观看它时,它不会将页面跳到该元素,并且异常与不在屏幕上的元素匹配。

更新:我添加了bool ex = Example.Exists();
之后,检查结果。它确实存在(正确)。其未显示(由于仍处于屏幕外,因为尚未移动到元素),因此未选择??????

有人看到By.ClassName成功。有谁知道在C#绑定中执行By.Id是否存在问题?


问题答案:

它的问题不大,但我相信有比上面建议的更好的解决方案。

您应该使用Actions类来执行到元素的滚动。

var element = driver.FindElement(By.id("element-id"));
Actions actions = new Actions(driver);
actions.MoveToElement(element);
actions.Perform();


 类似资料:
  • 问题内容: 我正在尝试将页面移至某个元素。 我尝试下一个代码无济于事: 问题答案: 您可以使用锚点来“聚焦” div。即: 然后使用以下javascript:

  • 问题内容: 我想滚动到selenium元素,但我希望它位于页面顶部,而不仅仅是在页面上可见。 我如何才能使页面滚动,从而使滚动到的元素位于浏览器的顶部? 问题答案: 这是我们使用此页面的示例 垂直滚动网页使用1000像素 例 x-pixels是x轴上的数字,如果number为正数则向左移动,如果number为负数则向右移动.y-pixels是y- axis的数字,如果number为y则向下移动。正

  • 我正在使用Selenium(Java版本)测试一个基于OpenLayers的API。 我想测试一个使用的功能。控制修改功能。我想单击绘制的特征(SVG),然后拖动并检查它们是否存在、可见或隐藏。 我已经画了一个多边形,并且选择了它。见下图: 这些SVG元素的HTML如下所示: 假设我想选择红点。 我试过: 但是它总是返回一个空列表。 我做错了什么?有人能帮我吗? 多谢了。 编辑1-功能:垂直显示可

  • 问题内容: 我有一个聊天小部件,每次向上滚动时,它都会拉出一系列消息。我现在面临的问题是加载消息时滑块固定在顶部。我希望它专注于上一个数组中的最后一个索引元素。我发现可以通过传递索引来创建动态引用,但是我还需要知道使用哪种滚动功能来实现这一点 问题答案: 单击此处,获得有关StackBlits的完整演示 React 16.3 +,Class组件 类组件-Ref回调 不要使用字符串引用。 字符串引用

  • 我使用以下代码滚动到不可见的元素: 当我使用上述方法进行滚动时,出现以下错误:- 未知命令,除滚动外的所有移动命令都已删除。 在Appium 1.5.0中,名称定位器被删除 在java客户机v4.0.0中,和被弃用。 我使用的是xpath而不是。 什么是移动解决方案:滚动到

  • 问题内容: Selenium 1.x或2.x中是否可以滚动浏览器窗口,以使XPath标识的特定元素在浏览器的视野中?Selenium中有一个聚焦方法,但是在FireFox中似乎并没有实际滚动视图。有人对此有任何建议吗? 我需要这样做的原因是我正在测试页面上某个元素的点击。不幸的是,除非该元素可见,否则该事件似乎不起作用。我无法控制单击元素时触发的代码,因此无法调试或对其进行修改,因此,最简单的解决