通过文本查找元素并获取xpath

我在我的网页上有一个9行6列的表格。 我想搜索文本“MakeGoodDisabled-Programwise_09_44_38_461(n)”并获取单元格的xpath。 我已经使用了以下内容,但因为无法在页面中找到文本而失败。 你能帮忙吗? 我使用Selenium Webdriver Junit来编写代码。

`List<WebElement> links = driver.findElements(By.tagName("td"));

                    Iterator<WebElement> itr = links.iterator();
                    while(itr.hasNext()){
                        String test = itr.next().getText();

                        if(test.equals("MakeGoodDisabled-Programwise_09_44_38_461(n)")){
                        String xpath = driver.findElement(By.name(test)).getAttribute("xpath");
                        System.out.println(xpath);
                        }
                    }`

我的意图是在表格中找到文本,并在同一行中获取相应的下一列值。 我认为我将用我想要的列号替换通过提取xpath找到的列号。 有没有更好的方法来做到这一点

当然有一种方法。 这是一个可能的解决方案。

获取所有行:

While (iterate over row)
     While(Iterate over column)
           if(column.Text=='YOUR_MATCH'){
             int voila=column.Index
           }
    }
}

现在,您可以简单地移动到其他行的特定索引; 或者您可以使用xpath如.../tr/td[voila]来检索该特定列的所有单元格。

我写了一个方法,请不要把它当成真正的工作代码!


您也可以使用它来爬取并生成xpath:

用下面的方法调用方法

generateXPATH(element, "");

输出结果如下所示:

/html[1]/body[1]/div[5]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/form[1]/div[2]/div[1]/input[2]

方法

private String generateXPATH(WebElement childElement, String current) {
    String childTag = childElement.getTagName();
    if(childTag.equals("html")) {
        return "/html[1]"+current;
    }
    WebElement parentElement = childElement.findElement(By.xpath("..")); 
    List<WebElement> childrenElements = parentElement.findElements(By.xpath("*"));
    int count = 0;
    for(int i=0;i<childrenElements.size(); i++) {
        WebElement childrenElement = childrenElements.get(i);
        String childrenElementTag = childrenElement.getTagName();
        if(childTag.equals(childrenElementTag)) {
            count++;
        }
        if(childElement.equals(childrenElement)) {
            return generateXPATH(parentElement, "/" + childTag + "[" + count + "]"+current);
        }
    }
    return null;
}

元素的XPath不是一个明确的值。 一个元素可以被许多XPath找到。

您不能使用Webdriver来提取XPath,即使可以,它也不可能是最高效或最合理的,只能由automator定义。

链接地址: http://www.djcxy.com/p/88589.html

上一篇: Find an element by text and get xpath

下一篇: jQuery x y document coordinates of DOM object