C# 如何使用Selenium在平滑的网格中水平滚动?

C# 如何使用Selenium在平滑的网格中水平滚动?,c#,selenium,slickgrid,webtest,webautomation,C#,Selenium,Slickgrid,Webtest,Webautomation,所以我有一个网站,使用光滑的网格。基本上,当浏览器窗口最大化时,仍然有水平滚动条(这是用户设计的)。现在,在web自动化测试(使用selenium)中,我确实获得了正确的列总数,但在没有向右滚动的情况下,selenium只提供了可见的列标题,其他不可见的列返回空白或空字符串。我的问题是你们有没有遇到过类似的问题,以及你们是如何解决这个问题的。 这是到目前为止我的代码。但当slick grid未在不滚动的情况下加载新内容时,它将返回空白。 我需要能够以某种方式向右滚动以获取所有列标题 int Ge

所以我有一个网站,使用光滑的网格。基本上,当浏览器窗口最大化时,仍然有水平滚动条(这是用户设计的)。现在,在web自动化测试(使用selenium)中,我确实获得了正确的列总数,但在没有向右滚动的情况下,selenium只提供了可见的列标题,其他不可见的列返回空白或空字符串。我的问题是你们有没有遇到过类似的问题,以及你们是如何解决这个问题的。 这是到目前为止我的代码。但当slick grid未在不滚动的情况下加载新内容时,它将返回空白。 我需要能够以某种方式向右滚动以获取所有列标题

int GetColumnIndexByName(string columnName)
{
    VerifyComponentLoaded();
    var colHeaders = Driver.FindElements(By.XPath("somepath"));
    for (int i = 0; i < colHeaders.Count; i++)
    {
        if (colHeaders.ElementAt(i).Text == columnName)
            return i;                    
    }
    Assert.Fail("The columnName {0} was not found.", columnName);
}
int GetColumnIndexByName(字符串columnName)
{
VerifyComponentLoaded();
var colHeaders=Driver.FindElements(By.XPath(“somepath”);
for(int i=0;i
您可以使用以下方法:

grid.setActiveCell(0,0);  // right before the for loop
然后在for循环中,就在顶部:

grid.navigateRight();

这应该可以根据需要查看每一列。但您应该知道,SlickGrid只呈现可见的列和行(加上一些缓冲区),所以信任DOM选择器进行测试是不明智的。特别是因为在垂直和水平滚动/分页时,SlickGrid还将重用现有元素并简单地替换内部文本。

您能解释一下SlickGrid方法的含义吗?在c#中是否有可供slick grid使用的库?@DoodleKana我不知道,上面是您必须在页面上执行的javascript。请参见这里的示例,了解如何做到这一点:感谢您的回复。是的,我知道c#中的js执行者。当我执行上面的jscript时,我得到了“未知错误:网格未定义”。我也没有意识到一年前我问了这个问题,今天又问了类似的问题,但却偶然发现了我一年前问过的相同问题。这是我关于stackoverflow的新问题。仔细检查后,我看到了slick.column-select-plugin.js、slick.comment-plugin.js、slick.pjax-link-plugin.js、slick.rowselectionmodel.js,但我没有看到slick.grid.js,我相信它就是您提到的函数的声明位置。如果没有slick.grid.js,我不知道我的slickgrid网站如何工作。但我想这听起来更像是一种帮助文件。