Selenium Node.js将控制转移到其他选项卡

时间:2018-03-09 03:24:06

标签: node.js selenium testing automation qa

目前我正在使用Node.js开展Selenium Automation Test。我找到了一些使用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!!');

任何帮助都会受到赞赏。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

哎呀,我发现了自己的错误。我应该找到使用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!!');

现在好了。快乐的编码!