如何在单击链接时更新当前选项卡的 URL


const selenium = require('selenium-webdriver');
require('chromedriver');
const By = selenium.By;
const driver = new selenium.Builder().forBrowser('chrome').build();
const url = 'https://example.com';
driver.get(url);
driver.findElement(By.css('header nav .header-nav-item-sign-in > .header-nav-link')).click();
// finding elements on the new URL that has been opened by clicking on the link
driver.findElement(By.css('#user_session_email')).sendKeys('example@email.com');
driver.findElement(By.css('#user_session_password')).sendKeys('example');
driver.findElement(By.css('button.button.primary[type=submit]')).click();

我打开"example.com"并找到一个链接元素。我单击链接并尝试在同一选项卡中打开的新URL上找到一个元素。我收到以下错误:

UnhandledPromiseRejectionWarning: NoSuchElementError: no such element: Unable to locate element: 

如何更新硒中的网址?

注意:使用的链接是虚拟链接。实际页面具有以下元素。我无法更新其中存在的网址硒。

我认为这是一个基本的 UI 自动化问题。您需要确保您在此处打开的页面已完全加载,并且元素已准备好使用诸如sendKeys之类的操作进行操作。

最好的方法是使用 wait 语句并确保在对元素执行任何操作之前加载元素(下面的代码(。

//wait till the element is located. Throws timeout error if the element is not located in 10 seconds
const user_session_email = driver.wait(
   until.elementLocated(By.css('#user_session_email')),
   10000  
);
//act on the element
user_session_email.sendKeys('example@email.com');

此方法的优点是,如果元素位于指定的完整 10 秒之前,则此方法不会等待整整 10 秒。

相关内容

  • 没有找到相关文章

最新更新