在Selenium Web驱动程序中水平滚动直到元素不可见

时间:2019-05-13 16:57:31

标签: java selenium-webdriver

我有一个水平桌很长的网站。我有Xpath提取表的列标题,该表的标题超出屏幕宽度(屏幕宽度的3倍)。现在,我必须提取所有具有各自索引的列标题,因为我的表具有显示列过滤器,用户可以从中选择或取消选择行。所以我需要动态地获取带有索引的列。现在,当我第一次尝试获取列头时,然后系统获取我的列头,直到它在第一个屏幕上可见而不滚动,但是现在当系统尝试获取列头在chrome上不可见时,然后编写代码返回一个空值。

  1. 我尝试获取总列数,并检查了向右滚动8列即可完成工作,但是与此同时,我无法在列数较少的其他Web表上重用此功能因为系统找不到i + 8列并显示异常。

  2. 当列头为空白时,我尝试每次向右滚动一列。但是有了这个,我的代码每次都变成空白时必须检查一个条件,这使我的方法非常缓慢,我负担不起,因为我需要至少35列并且超过2-3列时间用更大的方法。

现在,我所知道的是,我知道哪个列头对我可见,因此我需要向右滚动直到屏幕上看不到我所拥有的列头,这意味着我已经滚动到最大向右移动,而不会隐藏我没有覆盖的列。我该怎么办?

这是我尝试通过查看列的常规宽度来滚动8列的方法。这对我有用,但限制了功能的可重用性。

if (colHead.equalsIgnoreCase("")) {
WebElement elementToBeScrolled1 = driver.findElement(By.xpath("//th["+i+"+8]"));
By elementToBeScrolled = getByLocator(elementToBeScrolled1);
        do {
          keyPress(Keys.ARROW_RIGHT);
        } while (waitForElement(elementToBeScrolled, 5, WaitType.invisibilityOfElementLocated));
        colHead = driver.findElement(By.xpath("//th[" + i + "]"))
            .getText();

0 个答案:

没有答案