javascript - 在遍历父母时检查与子元素相关的条件 - 量角器
问题描述
我有一个 HTML 片段如下:
...
<div class="show-div account">
<ul >
<li>
<a href="/account/login">Login</a>
</li>
<li>
<a href="/account/register">Register</a>
</li>
</ul>
</div>
...
我想检查单击登录按钮后是否单击了登录页面。我从文档中了解到,以下内容应该有效,但不会。
const loginAction = await accountIcon.element(by.className('show-div')).$('ul').$$('li').filter(async function(elem) {
const a = elem.element(by.css('a'));
const attr = await a.getAttribute('href');
return attr.includes('/account/login');
}).first().$('a');
await loginAction.click();
const url = await browser.getCurrentUrl();
expect(url).endsWith('/account/login');
我在 Angular 10 中使用“量角器”:“7.0.0”。这些是由 JHipster 框架自动生成的。我不确定是否需要使用async/await
机制。考虑到ElementFinder
API,我应该但大多数示例都没有使用它。
(顺便说一句,SELENIUM_PROMISE_MANAGER 已禁用)
我会很感激任何帮助。提前致谢。
解决方案
您的第一个问题可能是您的定位器。过滤不能工作,那么链接可能有问题,element...element.all...first().element()
如果 url 是静态的,您可以将其用作定位器,并避免所有这些
let elem = $('[href="/account/login"]')
第二个可能的问题,点击后可能需要等待。否则getCurrentUrl
可能会返回原始 url,因为它还没有加载新页面。在这种情况下,我可以建议您等待该网址
var EC = protractor.ExpectedConditions;
// Waits for the URL to contain 'foo'.
await browser.wait(EC.urlContains('/account/login'), 15000);
在脚本的这一部分中,如果 url 永远不存在,它将失败并出现显式错误,表示该 url 不存在。否则,您不需要断言 url。如果脚本通过,这可能会作为您的 url 存在的警告,无需断言它
推荐阅读
- python - 使用 subprocess.Popen 传递 MPV 参数时出错
- r - 创建一个新列,在两列中添加天数,一列有数据,另一个 ID
- android - Android Chromebook 布局大小
- node.js - 如何使用 NODE_OPTIONS 环境变量在 Windows 中全局设置 max_old_space_size?
- mysql - 如何查询多个表以获取表具有相同列名的记录
- python - 根据值对齐两个系列
- ruby-on-rails - 尽管具有唯一性验证,但使用 Devise gem 创建的重复用户
- python - python线图,颜色基于x轴上带有日期的向量
- mysql - 按日期过滤记录以检索过去 7 天
- python - 如何在 csv 文件中查找元素并编辑文件