使用定位器访问表中的行的不同方式?

时间:2018-10-16 21:08:03

标签: selenium protractor

我正在尝试学习正确使用定位器来查找嵌套元素。使用w3school的修改表(用于说明海豚),什么是收集属于tbody的行元素的好方法(而排除属于thead的行元素)?

我在想:

element(by.tagName('tbody')).element.all(by.tagName('tr'))  

这不起作用,因为子定位器不能是elementArrayFinder(如果我正确理解的话)。

是否可以写:

element.all(by.css('tbody tr')) ? 

(经过漫长的一天,我会在明天的最后一次尝试)。

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<h2>HTML Table</h2>

<table>
<thead>
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <thead>
  <tbody>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
  </tbody>
</table>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

对于Protrator中的嵌套选择,您必须像以前一样直接对所有方法调用

element(by.tagName('tbody')).all(by.tagName('tr'))  

即使您可以用来选择这样的深子,

element(by.tagName('tbody')).all(by.tagName('td')) 

是的。 by.css('tbody tr')用于通过CSS选择器查找元素。在element.all()中使用它们将返回与css选择器匹配的所有元素。

 element.all(by.css('tbody tr'));

由于它是直系亲子,所以您也可以尝试一下,

element.all(by.css('tbody>tr'));