量角器 - 无法通过 css 获取嵌套元素
Protractor - Cannot get nested element by css
从现在开始我已经在这个问题上研究了几个小时了,但我仍然坚持下去。
在这段html代码中:
<div class="container ng-scope">
<div class="fc-toolbar"></div>
<div class="fc-view-container" style="">
<div class="fc-view fc-agendaWeek-view fc-agenda-view">
<table>
<thead class="fc-head"></thead>
<tbody class="fc-body">
<tr>
<td class="fc-widget-content">
<div class="fc-day-grid"></div>
<hr class="fc-divider fc-widget-header">
<div class="fc-time-grid-container fc-scroller" style="height: 329px;">
<div class="fc-time-grid">
<div class="fc-bg"></div>
<div class="fc-slats">
<table>
<tbody>
<tr>
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"><span>00</span></td>
<td class="fc-widget-content"></td>
</tr>
<tr class="fc-minor">
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"></td>
<td class="fc-widget-content"></td>
</tr>
<tr>
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"><span>01</span></td>
<td class="fc-widget-content"></td>
</tr>
<tr class="fc-minor">
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"></td>
<td class="fc-widget-content"></td>
</tr>
<tr>
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"><span>02</span></td>
<td class="fc-widget-content"></td>
</tr>
<tr class="fc-minor">
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"></td>
<td class="fc-widget-content"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
对于量角器 e2e 测试,我必须在 table 中捕获第二个 tr
并使用 getLocation()
.
获取其坐标
这就是我应该如何捕捉 tr:
var secondRow = element(by.css('.fc-body tr .fc-time-grid-container.fc-scroller .fc-slats table tbody tr:nth-child(2)'));
我怎样才能得到它的坐标:
secondRow.getLocation()
每次我尝试运行上面的代码我得到:
NoSuchElementError: No element found using locator: By.cssSelector(".fc-body tr .fc-time-grid-container.fc-scroller .fc-slats table tbody")
如果我使用 JQuery 在浏览器控制台中复制并粘贴 .fc-body tr .fc-time-grid-container.fc-scroller .fc-slats table tbody
,它会 returns 第二个 tr
正确。
我不明白为什么不使用量角器。
太容易被抓住了...我发现了一个 beforeEach ,每次重新加载主页时,很多元素(就像那个一样)都不存在。
我不得不注意...
beforeEach(function() {
browser.get('http://localhost:9000/#/');//<--- ...to this line!
});
现在我可以得到那个元素了。
从现在开始我已经在这个问题上研究了几个小时了,但我仍然坚持下去。
在这段html代码中:
<div class="container ng-scope">
<div class="fc-toolbar"></div>
<div class="fc-view-container" style="">
<div class="fc-view fc-agendaWeek-view fc-agenda-view">
<table>
<thead class="fc-head"></thead>
<tbody class="fc-body">
<tr>
<td class="fc-widget-content">
<div class="fc-day-grid"></div>
<hr class="fc-divider fc-widget-header">
<div class="fc-time-grid-container fc-scroller" style="height: 329px;">
<div class="fc-time-grid">
<div class="fc-bg"></div>
<div class="fc-slats">
<table>
<tbody>
<tr>
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"><span>00</span></td>
<td class="fc-widget-content"></td>
</tr>
<tr class="fc-minor">
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"></td>
<td class="fc-widget-content"></td>
</tr>
<tr>
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"><span>01</span></td>
<td class="fc-widget-content"></td>
</tr>
<tr class="fc-minor">
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"></td>
<td class="fc-widget-content"></td>
</tr>
<tr>
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"><span>02</span></td>
<td class="fc-widget-content"></td>
</tr>
<tr class="fc-minor">
<td class="fc-axis fc-time fc-widget-content" style="width: 44px;"></td>
<td class="fc-widget-content"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
对于量角器 e2e 测试,我必须在 table 中捕获第二个 tr
并使用 getLocation()
.
这就是我应该如何捕捉 tr:
var secondRow = element(by.css('.fc-body tr .fc-time-grid-container.fc-scroller .fc-slats table tbody tr:nth-child(2)'));
我怎样才能得到它的坐标:
secondRow.getLocation()
每次我尝试运行上面的代码我得到:
NoSuchElementError: No element found using locator: By.cssSelector(".fc-body tr .fc-time-grid-container.fc-scroller .fc-slats table tbody")
如果我使用 JQuery 在浏览器控制台中复制并粘贴 .fc-body tr .fc-time-grid-container.fc-scroller .fc-slats table tbody
,它会 returns 第二个 tr
正确。
我不明白为什么不使用量角器。
太容易被抓住了...我发现了一个 beforeEach ,每次重新加载主页时,很多元素(就像那个一样)都不存在。
我不得不注意...
beforeEach(function() {
browser.get('http://localhost:9000/#/');//<--- ...to this line!
});
现在我可以得到那个元素了。