【问题标题】:How to identify a cell in HTML table ( Selenium)如何识别 HTML 表格中的单元格(Selenium)
【发布时间】:2012-09-29 19:40:31
【问题描述】:

我的任务是右键单击并从 HTML 表格的下拉菜单中选择一个选项。

为此,我需要两件事的帮助:

  1. 如何使用 selenium 识别表格中的唯一单元格?

  2. 如何右键单击已识别的单元格?

本应用仅针对IE开发,表格示例代码如下:

table id="ctl00_ContentPlaceHolder1_dgvPatientList" class="grid" cellspacing="0" cellpadding="2" border="1" style="width:96%;border-collapse:collapse;" rules="all">

![这是 HTML 表格的代码][1] 谢谢您的帮助。

【问题讨论】:

  • 您能否提供更多信息,您正在使用哪个 selenium 版本以及带有示例的场景。

标签: selenium


【解决方案1】:

考虑到您的第一个问题, 它在这里讨论过 (manipultion with table cells using selenium) 提供的代码(在代码示例中,我们从表格的每个单元格中获取文本):

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class WebTableExample 
{

    public static void main(String[] args) 
    {
        WebDriver driver = new InternetExplorerDriver();
        driver.get("http://localhost/test/test.html");


        WebElement table_element = driver.findElement(By.id("testTable"));
        List<WebElement> tr_collection=table_element.findElements(By.xpath("id('testTable')/tbody/tr"));

        System.out.println("NUMBER OF ROWS IN THIS TABLE = "+tr_collection.size());
        int row_num,col_num;
        row_num=1;
        for(WebElement trElement : tr_collection)
        {
            List<WebElement> td_collection=trElement.findElements(By.xpath("td"));
            System.out.println("NUMBER OF COLUMNS="+td_collection.size());
            col_num=1;
            for(WebElement tdElement : td_collection)
            {
                System.out.println("row # "+row_num+", col # "+col_num+ "text="+tdElement.getText());
                col_num++;
            }
            row_num++;
        }    
    }       
}

考虑到您的第二个问题。调查了一个 lil bit 解决方法。 一种可能性:

selenium.mouseDownRight(locator);
  selenium.mouseUpRight(locator);

另一种方式:

WebElement elem = driver.findElement(By.xpath(".blablabla..")); //the element we want to //right click on
new Actions(driver).contextClick(elem).perform();

其他方式是使用javascript。

因此您将表格单元格作为 webElement。然后你用鼠标右键点击它。希望它对你有用。

【讨论】:

    【解决方案2】:

    原始问题未指定语言,因此这可能适用也可能不适用,但如果您使用 .NET 版本的 WebDriver 用 C# 编写测试,您可以使用 TableDriver 扩展 (https://github.com/jkindwall/TableDriver.NET)定位表格中的特定单元格。

    我不知道原始问题中表格的内容是什么样的,但举一个通用的例子,您想从“产品 ID”中的值所在的行中找到“价格”列中的单元格列是“ABC123”,你可以使用这样的:

    Table table = Table.Create(driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_dgvPatientList")));
    TableCell cell = table.FindCell("Product Id=ABC123", "Price");
    

    更新

    TableDriver.Java 现在可用。详情在这里:https://github.com/jkindwall/TableDriver.Java

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 2015-11-07
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多