【发布时间】:2019-12-23 19:00:05
【问题描述】:
我试图与之交互的元素是使用ng-sortable 并包含几个可以拖动和排序的 div。
await viewTransaction.getEl('div#dragdrop-boundary').sendKeys(protractor.Key.ARROW_DOWN);
Failed: element not interactable
在这种情况下元素是可见的。我想知道是否只有某些元素(例如dropdowns)可以通过这种方式与sendKeys“交互”?
这是只指定WebElement 的Documentation。
我的主要问题是“是否只有某些 WebElements 可以通过特定方式进行交互,例如 protractor.Key.ARROW_DOWN?
这是部分标记
已更改类和变量的名称以保护无辜
<div ng-show="sortMode.sorting" id="dragdrop-boundary" class="sortMode-high">
<div ng-if="Transaction && Transaction.TransactionId" ng-repeat="Section in Sections" class="ng-scope">
<div ng-hide="'PICKLIST' === Section.SectionId" class="lineItem-title ng-binding">Rental</div>
<div data-ng-model="SortableLineItems[Section.SectionId]" data-as-sortable="sortableOptions" class="ng-pristine ng-untouched ng-valid ng-scope ng-not-empty">
<div data-as-sortable-item="" data-ng-repeat="LineItem in SortableLineItems[Section.SectionId]" class="ng-scope as-sortable-item">
<div as-sortable-item-handle="" class="sortMode-existing-lineitems sortMode-row sortMode-outerRow sortMode-item-enable sortMode-selected" ng-class="arbitrary:LineItem.TransactionType=='SALEFEE','kit-component':LineItem.IsKitComponent,'damage-waiver':LineItem.TransactionType=='DAMAGEWAIVER',discount:!LineItem.ItemId && LineItem.ItemKey.includes('Discount')}">
<div class="sortMode-icon-container">
<button class="btn-default btn btn-xs action-btn-delete ng-scope" ng-if="LineItem.ItemId && LineItem.LineItemId" disabled="">
<span class="roro-icon roro-icon-cancel"></span>
</button>
</div>
<div class="sortMode-cell sortMode-item-name ng-binding">Wagon</div>
<div class="sortMode-cell sortMode-item-key ng-binding ng-scope" ng-if="LineItem.HasItemKey">ITEM-3</div>
<div class="sortMode-cell sortMode-amount-per-item ng-binding">$30.00</div>
<div class="sortMode-cell sortMode-quantity ng-binding">1</div>
<div class="sortMode-cell sortMode-amount-text ng-binding">$30.00</div>
<div class="sortMode-cell sortMode-tax-free-text ng-binding">T</div>
<div class="clearfix line-item-instances ng-scope" ng-if="LineItem.ItemSerialized && !RemovingItem[LineItem.LineItemId]">
<div ng-class="{'padding-none' : !subItemPopup[$index].active}" class="padding-none">
<div class="line-item-cards">
<div class="line-item-card tbd-card ng-scope" ng-if="LineItem.CountUnassigned"><div>
<span translate="TBD" class="ng-scope">TBD</span> x <span class="ng-binding">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-if="Transaction && Transaction.TransactionId" ng-repeat="Section in Sections" class="ng-scope">
<div ng-hide="'PICKLIST' === Section.SectionId" class="lineItem-title ng-binding">Damage Waiver</div>
<div data-ng-model="SortableLineItems[Section.SectionId]" data-as-sortable="sortableOptions" class="ng-pristine ng-untouched ng-valid ng-scope ng-not-empty">
<div data-as-sortable-item="" data-ng-repeat="LineItem in SortableLineItems[Section.SectionId]" class="ng-scope as-sortable-item">
<div as-sortable-item-handle="" class="sortMode-existing-lineitems sortMode-row sortMode-outerRow
sortMode-item-enable
sortMode-unselected" ng-class="{arbitrary:LineItem.TransactionType=='SALEFEE','kit-component':LineItem.IsKitComponent,'damage-waiver':LineItem.TransactionType=='DAMAGEWAIVER',discount:!LineItem.ItemId && LineItem.ItemKey.includes('Discount')}">
<div class="sortMode-icon-container">
<button class="btn-default btn btn-xs action-btn-edit ng-scope" ng-if="LineItem.TransactionType == 'DAMAGEWAIVER'" disabled="">
<span class="roro-icon roro-icon-edit"></span>
</button>
</div>
<div class="sortMode-cell sortMode-item-name ng-binding">Damage Waiver (10%)</div>
<div class="sortMode-cell sortMode-item-key ng-binding ng-scope" ng-if="LineItem.HasItemKey">N/A<div>
<div class="sortMode-cell sortMode-amount-per-item ng-binding">$3.00</div>
<div class="sortMode-cell sortMode-quantity ng-binding">1</div>
<div class="sortMode-cell sortMode-amount-text ng-binding">$3.00</div>
<div class="sortMode-cell sortMode-tax-free-text ng-binding">T</div>
</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
你至少能提供更多的背景信息吗?扩展您尝试与元素交互的方式、定位器的外观以及 html 元素的外观
-
@Cynic
ARROW_KEY_DOWN与click有这种关系吗? -
在执行某些操作之前检查元素是否可见、可点击。
-
点击和发送键都是交互。你说,Seleniums 正在返回
Failed: element not interactable,所以这可能是一种检查方式。
标签: typescript testing selenium-webdriver protractor ng-sortable