【问题标题】:How To Find the element that is visible only after Scrolling?如何找到仅在滚动后可见的元素?
【发布时间】:2020-08-05 09:01:50
【问题描述】:

我有一个 SAP 应用程序,有如下图所示的对话框:

这个对话框的html源代码是

我们可以看到只有 18 行 当我滚动条时(在图 1 中用蓝色箭头显示)html 源代码 显示另外 18 行,因为对话框中只能容纳 18 行。 现在我想将栏滚动到最后并选择框的最后一行。 我该怎么做??

我尝试过使用

public void waitForElement()
        {
            //IJavaScriptExecutor je = (IJavaScriptExecutor)StaticDriver.driver;
            //IWebElement element = StaticDriver.driver.FindElement(By.XPath("(//*[@class= 'slick-cell l0 r0 row_62 cid_col_0']//div)//following-sibling::div"));
            //je.ExecuteScript("arguments[0].scrollIntoView(true);", element);

            var element = StaticDriver.driver.FindElement(By.XPath("(//*[@class= 'slick-cell l0 r0 row_62 cid_col_0']//div)//following-sibling::div"));
            Actions actions = new Actions(StaticDriver.driver);
            actions.MoveToElement(element);
            actions.Perform();
        }

// that xpath is the element of last row.

但我收到错误Element count be found

如何滚动到最后一个元素并找到该元素?

最后一个元素的视图和html源代码是:

HTML 源代码:

【问题讨论】:

  • 对于滚动看看here,这是一个python示例,但我很支持有一个c#挂件。如果您仍然无法访问该项目,那么看看您的身边是否使用iframe 元素,而不是switch the context

标签: c# selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

尝试使用 JavaScript 执行器滚动到页面末尾:

 js.executeScript("window.scrollTo(0, document.body.scrollHeight)");

【讨论】:

  • 不,它没有响应。栏没有滚动
  • 如果此评论是给其他人的,您需要添加@other-person 的姓名,以便他收到。现在写在我的答案下面,所以我是唯一一个收到你评论通知的人。
【解决方案2】:

上面的答案应该有效,如果你想滚动到可以使用以下元素的元素:-

IWebElement element = driver.FindElement(by);
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 2013-10-01
    • 2019-11-24
    • 2010-10-03
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2013-08-03
    • 2019-03-22
    相关资源
    最近更新 更多