javascript - 硒承诺{} 同时期望返回一个字符串
问题描述
我遇到了硒问题。我已经输出了一个模式,它从提交的请求中弹出一个字符串。我正在寻找使用 findElement 使用 xpath 获取该数据,并将字符串返回到控制台。看起来承诺没有解决,我不确定如何将它包装在承诺中,所以我得到了该承诺的结果。
DevTools 监听 ws://127.0.0.1:60822/devtools/browser/a2114051-85ec-47d7-9d62-9f9809ef732c
考试通过了
形式
承诺 { <待处理> }
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
USERNAME = 'XXXXXX';
PASSWORD = 'XXXXXXXX';
WEBSITE = 'https://XXXXXXXXXXXXXX/';
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
//tag[text()=’text value‘]
driver.get(WEBSITE);
driver.sleep(4000).then(function() {
driver.findElement(By.id('username')).sendKeys(USERNAME);
driver.findElement(By.id('password')).sendKeys(PASSWORD);
driver.findElement(By.id('submit1')).click();
});
driver.sleep(26000).then(function() {
driver.getTitle().then(function(title) {
if (title === 'Forms') {
console.log('Test passed');
console.log(title);
driver.findElement(By.xpath("//*[text() = 'Request']")).click();
//driver.findElement(By.id('market')).selectBuyValue('CI').click();
//*[@id="request"]/div[3]/div/input
driver.sleep(4000).then(function() {
driver.findElement(By.xpath("//*[@id='market']")).sendKeys("CI");
driver.findElement(By.xpath("//*[@id='request']/div[3]/div/input")).click();
});
driver.sleep(10000).then(function() {
console.log(driver.findElement(By.xpath("//*[@id='myModal']/div/div/div[1]/div")).getText());
//THIS WORKS driver.findElement(By.xpath("//*[@id='myModal']/div/div/div[2]/button")).click();
});
} else {
console.log(title);
console.log('took to long');
}
});
});
解决方案
driver.findElement()
和方法都WebElement.getText()
返回一个承诺,所以你必须要么await
在async
函数中调用 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function - 要么增加你的回调地狱通过then()
像调用其他 Promise 实例一样调用该方法。
推荐阅读
- processing - 小行星游戏 - 越野车碰撞检测
- php - VSCode - 格式 - 打开标签(php)作为代码最左边的标尺直到结束标签?
- python - python - 如何以保持相互索引一致的方式对dict和list进行排序?
- amazon-web-services - 使用 DeepAR 对多个独立产品进行时间序列预测
- c - 检查字符串中的字符是否为 NULL 时的缺陷
- integration - 将列添加到结果
- pentaho - 向现有表 Pentaho 添加新列
- c++ - 扩展初始值设定项列表仅适用于 c++ 中的 -std=c++11 或 -std=gnu++11
- java - 数据 onResponse 后回调无法正常工作
- node.js - 将图像从节点 js 上传到 s3