当前位置: 首页 > 面试题库 >

selenium:ManagedPromise :: 32 {[[PromiseStatus]]:“待定”}消息,然后导航到页面

慕嘉运
2023-03-14
问题内容

我尝试了以下selenium-webdriverJS代码:

var webdriver = require('selenium-webdriver');
var browser = new webdriver.Builder().usingServer().withCapabilities({'browserName': 'chrome' }).build();


browser.get('http://localhost:1091/WebTours/sample.html');
var btn = browser.findElement(webdriver.By.id('show-coordinates'));
browser.sleep(3000);
var ids = btn.getAttribute("id");
console.log("attributes: " + ids); //expecting to run after above lines.
browser.quit();

预期: 导航到给定的URL,找到元素,然后id按如下所示打印属性:

attributes: show-coordinates

实际: 在导航到URL本身之前,attributes:显示以下消息:

attributes: ManagedPromise::32 {[[PromiseStatus]]: "pending"}

环境:

Windows 7 - 64 bit
selenium-webdriver (installed using `npm install selenium-webdriver`)
ChromeDriver
Chrome

问题答案:

您需要从使用以下方法返回的承诺中提取值: then();

所有的webdriver命令都将诺言作为诺言管理器的一部分返回。这使您能够编写

driver.findElement(By.css('#searchBar')).clear();
driver.findElement(By.css('#searchBar')).sendKeys('hello');
driver.findElement(By.css('#searchButton')).click();

不必像这样将它们链接起来:

driver.findElement(By.css('#searchBar')).clear().then(function() {
  driver.findElement(By.css('#searchBar')).sendKeys('hello').then(function(){
    driver.findElement(By.css('#searchButton')).click();
  });
})

但是getAttribute(),和许多Webdriver
JS命令一样,它返回一个值。在这种情况下,您需要注册一个promise回调以提取该值。因此,您的代码变为:

browser.get('http://localhost:1091/WebTours/sample.html');
var btn = browser.findElement(webdriver.By.id('show-coordinates'));
browser.sleep(3000);
var ids = btn.getAttribute("id").then(function(promiseResult){
  console.log("attribute is: " + promiseResult);
});
browser.quit();


 类似资料:
  • 7.3 导航相关消息 在导航功能包集中包含了诸多节点,毋庸置疑的,不同节点之间的通信使用到了消息中间件(数据载体),在上一节的实现中,这些消息已经在rviz中做了可视化处理,比如:地图、雷达、摄像头、里程计、路径规划...的相关消息在rviz中提供了相关组件,本节主要介绍这些消息的具体格式。

  • Iam正在使用ionic应用程序编辑配置文件和查看配置文件。编辑编辑页面的详细信息后,它将导航到查看配置文件页面。 我希望在导航后刷新查看配置文件页面。 这是editprofile.ts代码: 首先我用下面的导航 通过谷歌搜索,我添加了这个来在导航后刷新视图配置文件 现在发生的是,首先它被重定向到查看个人资料页面,并且没有刷新,它直接重定向到主页,主页被刷新。 请帮助我如何在从“编辑配置文件”页面

  • 我有以下兔子听者: 我需要将listener配置为在它处理一条消息后等待15分钟,然后再接收下一条消息。不需要在此方法中等待。我所需要的只是在处理完一条后不接收任何消息。可以通过来完成,但我不确定这是否是实现这一点的最佳方法。对于这种情况有没有rabbitmq的配置?

  • 我已使用此(react router 2.0)在路由器上设置了browserHistory: 然后,我尝试使用react router中的browserHistory以编程方式从视图(ala: 这将URL更改为 /map但不会呈现该路由中的组件。我做错了什么?

  • 这段代码适用于发送数据并关闭连接的客户机,但是当使用一个连接的客户机多次发送时,数据没有被读取->我应该在读取完整正文后关闭连接吗?

  • 我正在使用hiredis C库连接到redis服务器。我不知道在订阅新消息后如何等待新消息。 我的代码如下所示: 现在如何告诉雇佣者在频道上等待消息?