2015-02-20 19 views
1

Я новичок в селене и надеялся, что кто-то может мне помочь. Я пытаюсь найти конкретную ячейку в таблице и вернуть ее текстовое содержимое. В таблице представлена ​​ниже html:Selenium, найти ячейку в таблице

<h2>Test #2</h2> 
<table border="1"> 
    <tbody> 
     <tr> 
     <td>1:1</td> 
     <td>1:2</td> 
     <td>1:3</td> 
     </tr> 
     <tr> 
     <td>2:1</td> 
     <td>2:2</td> 
     <td>2:3</td> 
     </tr> 
     <tr> 
     <td>3:1</td> 
     <td>3:2</td> 
     <td>3:3</td> 
     </tr> 
    </tbody> 
</table> 
</div> 

Я пытаюсь вернуть текст из ячейки с 3: 2. Что мне нужно изменить, чтобы это произошло?

Это то, что я до сих пор:

public void test2() throws InterruptedException { 
    getValue(1, 3); 
} 

public void getValue(int row, int col) { 
    List<WebElement> tableRows = driver.findElements(By.cssSelector("#req2 table tbody tr")); 
    List<WebElement> tableCol = tableRows.get(row - 1).findElements(By.tagName("td")); 

    System.err.println(tableCol.get(col - 1).getText()); 
} 

ответ

1

Используйте следующую функцию CssSeleector

tbody>tr:nth-child(3)>td:nth-child(2) 

nth-child() дает вам возможность легко найти ребенка с различными index

Я сильно предположим, что вы используете это с каким-то explicit, чтобы правильно найти элемент

By css = By.cssSelector("tbody>tr:nth-child(3)>td:nth-child(2)"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(css)); 
System.out.println(myDynamicElement.getText()); 

печати

3: 2

С небольшим изменением в коде это выглядит следующим образом

@Test 
public void DemoTest() throws InterruptedException { 

    System.out.println(test2()); 


} 

public String test2() throws InterruptedException { 
    return getValue(3, 2).getText() ; 
} 

public WebElement getValue(int row, int col) { 

    By css = By.cssSelector("tbody>tr:nth-child(" + row + ")>td:nth-child(" + col + ")"); 
    WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
        .until(ExpectedConditions.visibilityOfElementLocated(css)); 

    return myDynamicElement; 
} 

печати

3: 2

Смежные вопросы