我试图创建一个使用Cloudinary的第三方组件的量角器测试。到目前为止,我找不到一个元素是不成功的。
HTML看起来像这样:
<div class="header" id="cloudinary-navbar">
<ul class="sources clear">
<li class="source local active" data-source="local">
<span class="label" data-text-key="sources.local.title">My files</span>
<span class="icon"></span>
</li>
<li class="source url" data-source="url">
<span class="label" data-text-key="sources.url.title">Web Address</span>
<span class="icon"></span>
</li>
<li class="source camera" data-source="camera">
<span class="label" data-text-key="sources.camera.title">Camera</span>
<span class="icon"></span>
</li>
</ul>
<a class="close" href="#">×</a>
</div>
&#13;
我试图找到第二个li
并执行此操作:
var webLinkButton = element(by.id('cloudinary-navbar')).element(by.css('.url'));
我收到以下错误:
Message:
Failed: No element found using locator: By(css selector, *[id="cloudinary-navbar"])
Stack:
NoSuchElementError: No element found using locator: By(css selector, *[id="cloudinary-navbar"])
这让我感到困惑,因为我没有通过CSS搜索cloudinary-navbar
。
我应该如何找到这个元素?
答案 0 :(得分:3)
找不到使用定位器的元素:By(css选择器,* [id =&#34; cloudinary-navbar&#34;])
*[id="your_id"]
是WebDriverJS
actually uses执行的内容&#34;由id&#34;查找。
在您的情况下,这应该不相关,因为定位器本身是正确的并且应该找到该元素。这些是您找不到元素的常见原因&#34;问题:
该元素位于iframe
内的,您需要切换到它:
browser.switchTo().frame("frame_name_or_id");
您需要明确地等待元素出现:
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(element(by.id('cloudinary-navbar'))), 5000);
元素实际上并不存在,您需要为其显示一个额外的操作 - 打开一个菜单,例如