node.js - Selenium Node.js转移控制到其他标签

标签 node.js selenium testing automation qa

目前,我正在使用Node.js进行Selenium自动化测试。我发现使用Selenium无法实现的一些操作。这是详细信息。

我当前的先决条件是从某些处理电子邮件网站的Deeplink中打开新标签。单击深层链接后,“更改我的密码”将重定向到我的网站并继续更改密码过程。如何将控制权转移到其他选项卡?

//after click on deeplink, open new tab

driver.getAllWindowHandles().then(function gotWindowHandles(allhandles) {
       return driver.switchTo().window(allhandles[allhandles.length - 1]);
 });

let newtab = driver.findElement(By.xpath('//*[@id="new_password"]'));

await driver.wait(until.elementLocated(newtab));
await driver.wait(until.elementIsVisible(driver.findElement(newtab))).sendKeys('Tester123!!');
//enter confirm password
await driver.findElement(By.xpath('//*[@id="confirmpass"]')).sendKeys('Tester123!!');


任何帮助将不胜感激。

先感谢您。

最佳答案

糟糕,我发现了我的错误。我应该使用By.xpath而不是driver.findElement查找给我不同的结果。

//after click on deeplink, open new tab

driver.getAllWindowHandles().then(function gotWindowHandles(allhandles) {
       return driver.switchTo().window(allhandles[allhandles.length - 1]);
 });

//should be use by xpath :(
let newtab = By.xpath('//*[@id="new_password"]');

await driver.wait(until.elementLocated(newtab));
await driver.wait(until.elementIsVisible(driver.findElement(newtab))).sendKeys('Tester123!!');
//enter confirm password
await driver.findElement(By.xpath('//*[@id="confirmpass"]')).sendKeys('Tester123!!');


现在一切都好。编码愉快!

关于node.js - Selenium Node.js转移控制到其他标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49186117/

相关文章:

java - 等待元素中出现的文本不是提供的字符串

ruby-on-rails - Minitest——如何查看失败的测试

testing - 找不到限定词 : How to solve Kotlin reflection is not available when creating modules with Koin test? 的定义

node.js - 如何使用 Express.js 为 Restful API 构建代码?

javascript - 驼峰字符串转普通字符串

c# - 如何使用 C# 在 Selenium WebDriver (Selenium 2) 中最大化浏览器窗口?

C# - Selenium - firefox 驱动程序无法捕获和应用 AcceptInsecureCerts(2018/02/08 最新版本)

testing - 使用 Buf 测试模块 'isa-ok'

php - Base64 解码在 Node 中的工作方式与在 php、perl 或 python 中不同

javascript - nodejs - 如何修复服务器脚本以避免崩溃?