如何使用Selenium WebDriver在滚动的动态加载网格中搜索元素?

如何使用Selenium WebDriver在滚动的动态加载网格中搜索元素?,第1张

如何使用Selenium WebDriver在滚动的动态加载网格中搜索元素

首先,我很抱歉,因为我以前从未在网格上工作过。我认为这将是一个框架,并且使用 JavascriptExecutor
可以更轻松地切换然后滚动到元素。可惜!网格不是这种情况。
并且,当涉及网格时,必须有一个表格。

现在,这对我有用。


  • 首先单击网格上的任何可见元素以使其成为焦点。
  • 然后使用“ Keys.PAGE_DOWN”使用网格的定位器(xpath,id等)滚动网格,直到找到所需的元素。
  • 如果在每个滚动条上都找不到该元素,则处理它引发的异常并再次滚动。

注意:每次滚动后,请不要忘记提供一些睡眠时间。

我已经自动化了一个示例网格,并在下面附加了示例工作代码。希望这有助于解决问题:

import java.io.IOException;import org.openqa.selenium.By;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;public class ScrollGrid{    public static void main(String[] args) throws IOException, InterruptedException{        WebDriver driver = new FirefoxDriver();        driver.get("https://demos.devexpress.com/ASPxGridViewDemos/PagingAndScrolling/VirtualPaging.aspx");        driver.manage().window().maximize();        //Clicking on an element inside grid to get it into focus        driver.findElement(By.xpath("//*[@id='ContentHolder_ASPxGridView1_DXMainTable']//td[.='9/30/1994']")).click();        WebElement ele=null;        int flag=0;        int count=0;        do{ try{     //element to search for while scrolling in grid     ele = driver.findElement(By.xpath("//*[@id='ContentHolder_ASPxGridView1_DXMainTable']//td[.='3/28/1996']"));     flag=1; } catch(Throwable e){     //scrolling the grid using the grid's xpath     driver.findElement(By.xpath("//*[@id='ContentHolder_ASPxGridView1']//div[2]")).sendKeys(Keys.PAGE_DOWN);     Thread.sleep(3000); }        }while((flag==0) || ((++count)==250));        if(flag==1){ System.out.println("Element has been found.!!");        }else{ System.out.println("Element has not been found.!!");        }        highlightElement(driver, ele); //For highlighting the element        Thread.sleep(5000L); //to check if the element scrolled to is highlighted.        driver.close();    }    //For highlighting the element to be located after scroll    public static void highlightElement(WebDriver driver, WebElement ele) {        try        { for (int i = 0; i < 3; i++)  {     JavascriptExecutor js = (JavascriptExecutor) driver;     js.executescript("arguments[0].setAttribute('style', arguments[1]);",ele, "color: red; border: 2px solid red;"); }        }        catch(Throwable t)        { System.err.println("Error came : " +t.getMessage());        }    }}

注意: 这现在可以正常工作。如果找到该元素,或者如果在250次滚动后找不到,它将退出循环。“
250”是相对数字。您可以将其更改为要在网格上执行的滚动数。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5641987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存