我无法使用WebDriver with Java从Web表的特定行获取特定文本

时间:2013-02-15 12:20:09

标签: java xpath selenium-webdriver html-table

我无法从网络表中获取文字。请参阅下面的屏幕截图,查看我要查找的文字。如何从下面的屏幕截图中获取文本Quick App。

screen of my app.

在屏幕截图中,如果我找到快速应用程序,则必须单击该用户的“编辑”链接。 下表的xpath计数代码:

//table[@id='ctl00_MasterPlaceHolder_GvUsers']/tbody/tr

我尝试使用以下代码捕获文本:

text = driver.findElement(By.xpath("//table[@id='ctl00_MasterPlaceHolder_GvUsers'] 
/tbody/tr["+k+"]/td[3]")).getText();
System.out.println(text);

执行上面的代码后,我得到Null值。 请通过提供代码帮助我解决此问题。将不胜感激。

<table id="ctl00_MasterPlaceHolder_GvUsers" class="btext" cellspacing="0" cellpadding="2" border="0" style="color:#333333;width:100%;border-collapse:collapse;"> <tbody> <tr align="left" style="color:White;background-color:#507CD1;font-weight:bold;"> <tr class="text" style="color: rgb(28, 28, 28); background-color: rgb(249, 182, 115); font-weight: normal; height: 10px; text-decoration: none;" onclick="javascript:__doPostBack('ctl00$MasterPlaceHolder$GvUsers','Select$0')" onmouseout="javascript:setMouseOutColor(this);" onmouseover="javascript:setMouseOverColor(this);">
<tr style="background-color: White; height: 10px; text-decoration: none;" onclick="javascript:__doPostBack('ctl00$MasterPlaceHolder$GvUsers','Select$1')" onmouseout="javascript:setMouseOutColor(this);" onmouseover="javascript:setMouseOverColor(this);"> <tr style="background-color: rgb(239, 243, 251); height: 10px; text-decoration: none;" onclick="javascript:__doPostBack('ctl00$MasterPlaceHolder$GvUsers','Select$2')" onmouseout="javascript:setMouseOutColor(this);" onmouseover="javascript:setMouseOverColor(this);">
<tr style="background-color: White; height: 10px; text-decoration: none;" onclick="javascript:__doPostBack('ctl00$MasterPlaceHolder$GvUsers','Select$3')" onmouseout="javascript:setMouseOutColor(this);" onmouseover="javascript:setMouseOverColor(this);"> <tr style="background-color: rgb(226, 222, 208); height: 10px; text-decoration: none;" onclick="javascript:__doPostBack('ctl00$MasterPlaceHolder$GvUsers','Select$4')" onmouseout="javascript:setMouseOutColor(this);" onmouseover="javascript:setMouseOverColor(this);"
<tr style="background-color: White; height: 10px; text-decoration: none;" onclick="javascript:__doPostBack('ctl00$MasterPlaceHolder$GvUsers','Select$5')" onmouseout="javascript:setMouseOutColor(this);" onmouseover="javascript:setMouseOverColor(this);"> <td>7CUser44</td> <td>Swamy m Kumara</td> <td>Quick App</td> <td>QuickApp User</td> <td>Active</td> <td>halcyon2</td> <td>COTTAGE GROVE </td> <td>WI</td> <td> </tr>




   int xpathcount= driver.findElements(By.xpath((OR.getProperty("xpathcount_Users_ID")))).size();
        System.out.println("Number of rows displayed in Site History table: " +xpathcount);
        int k;
        for (k=1;k<=xpathcount;k++)
        {
            Select table = new Select(driver.findElement(By.xpath("//table[@id='ctl00_MasterPlaceHolder_GvUsers']/tbody/tr["+k+"]/td[3]")));
            text1 = table.getFirstSelectedOption().getText();
            System.out.println("Selected User Level is: "+text1);
            Thread.sleep(2000);
            text = driver.findElement(By.xpath("//table[@id='ctl00_MasterPlaceHolder_GvUsers']/tbody/tr["+k+"]/td[3]")).getText();
            System.out.println(text);
        }

请找到我用过的代码。

3 个答案:

答案 0 :(得分:1)

在这里,我修改了我的代码,如下所示。感谢所有试图帮助我的成员。

int xpathcount=     
driver.findElements(By.xpath((OR.getProperty("xpathcount_Users_ID")))).size();
System.out.println("Number of rows displayed in Site History table: " +xpathcount);
int k;
for (k=2;k<=xpathcount;k++)
{
text = driver.findElement(By.xpath("//table[@id='ctl00_MasterPlaceHolder_GvUsers']
   /tbody/tr["+k+"]/td[3]")).getText();
System.out.println(text);
}

答案 1 :(得分:0)

在这里,我可以使用python webdriver给出一个简单的例子。但我不知道如何使用java获取文本。见下面的例子

word=driver_find_element_by_xpath("xpath value which text you need from web table")
print word.text

将显示您在网络表格中选择的答案。

答案 2 :(得分:-1)

很难给出一个没有HTML的正确答案,但这里可能有所帮助。

public void getEditTable(final WebDriver driver, final By table, final String query) {
    List<WebElement> lines = table.findElements(By.tagName("tr"));

    for (WebElement line : lines) {
        List<WebElement> cols = line.findElements(By.tagName("td"));

        if (cols.get(2).getText().equals(query)) {
            List<WebElement> actions = cols.get(8).findElement(By.tagName("a"));
            actions.get(0).click();
        }

    }

}

现在我必须指出,这很可能需要你做很多工作,但也许你可以得到主要的想法。我为公司的CRUD站点做了类似于Web表的事情。