无法使用 selenium webdriver 选择表格行,因为 div 类正在动态变化

Posted

技术标签:

【中文标题】无法使用 selenium webdriver 选择表格行,因为 div 类正在动态变化【英文标题】:Not able to select the row of table using selenium webdriver as div class is dynamically changing 【发布时间】:2016-07-01 13:08:52 【问题描述】:

我想选择表格的第一行,但 selenium 无法选择表格 itslef,因为它的父 div 具有根据鼠标事件发生变化的动态类。帮我选择行,因为我都卡住了。 以下是部分截图:

鼠标不在行时:

选择行时:

【问题讨论】:

请分享您在 selenium 中尝试过什么????用什么语言???并尽可能分享您的网站网址... 请提供更多的 html 代码,重要的是 HTML 上面需要的 div 元素来帮助你。使用可以使用带有 fire bug 的 firepath 来查找 xpath。如果 firepath 给出的相对路径包含动态元素,则选择生成绝对 xpath,然后将提供绝对 xpath。你可以从这个 xpath 获得帮助 【参考方案1】:

因为它是一个Ext-Js 3(必须从您的屏幕截图中反向搜索那些类文件并找到它。下次请提及框架)应用程序,您可以使用相对第一行的xpath

//div[contains(@class,'x-grid3-row')][1]//td[contains(@class,'x-grid3-col')]

由于您没有提到哪种语言,下面是示例 Ext-JS 3 应用程序的 Java 实现

MCVE

  public static void main(String[] args) throws InterruptedException 
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://examples.extjs.eu/one2many.html");
        for (int i = 1; i < 6; i++) 
            Thread.sleep(1000);
            driver.findElement(By.xpath(forRow(i))).click();
        
        driver.quit();
    

    /**
     *
     * @param index starts from 1
     * @return
     */
    private static String forRow(int index) 
        return "//div[contains(@class,'x-grid3-row')][" + index + "]//td[contains(@class,'x-grid3-col')]";
    

【讨论】:

以上是关于无法使用 selenium webdriver 选择表格行,因为 div 类正在动态变化的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Selenium WebDriver 检查单选按钮?

如何使用 Selenium WebDriver 和 Java 获得选定的选项

在 Selenium Webdriver 如何处理这种包含复选框的多选下拉列表

无法使用Selenium和Java 11导入org.openqa.selenium.WebDriver

无法使用 Selenium 和页面工厂在页面对象类中调用“org.openqa.selenium.WebDriver.getTitle()”

无法在 python selenium 中使用 selenium chrome webdriver 定位元素