javascript - Javascript Selenium - 出于某种原因,我的代码不会在 Internet Explorer 的谷歌页面上单击或导航
问题描述
对于 Internet Explorer 的 javascript 版本的 selenium,我有一点棘手的问题。
我一直在尝试做一个简单的测试:
第 1 步 - 打开 Internet Explorer。第 2 步 - 单击搜索栏(名称在 CSS 中为 q)。第 3 步 - 在搜索栏中输入 wikipedia。第 4 步 - 按 Enter 键搜索维基百科。
在 python 和其他浏览器中,这很容易。出于某种原因,在 Internet Explorer 中,它被证明具有挑战性。我查看了该网站上的各种回复。
有些人呼吁在输入任何数据之前点击搜索栏。其他人则表示需要添加等待条件。我都做了(请看我下面的代码)。如果你们能复制这个问题并帮助我解决它,我将非常感激。
代码版本 1,这是我的简化版本:
async function example (){let driver = new Builder().forBrowser("internet explorer").build();
driver.get("http://google.com").then(function(){
driver.wait(elementIsEnabled(By.name("q")),20).findElement(webdriver.By.name("q")).click().then(function(){
driver.wait(elementIsVisible(By.name("q"))).findElement(webdriver.By.name("q")).sendKeys("Selenium", Key.ENTER);
})
});
}
example ();
代码版本 2 更冗长,是我诊断问题的尝试。如您所见,我没有成功...
async function callOne(){
await console.log("page complete");}
async function callTwo(){
await console.log("click complete");}
async function callThree(){
await console.log("navigation complete");}
let driver = new Builder()
.usingServer()
.forBrowser("internet explorer")
.build();
async function example() {
try {
await driver.get("http://www.google.com");
driver.wait(elementIsVisible(By.name("q")), 20).then(callOne)
(await driver.findElement(By.name('q'))).click().then
(callTwo).then(async function(){
await driver.findElement(By.name("q")).sendKeys('wikipedia',Key.RETURN);
}).then(callThree);
} catch (error) {
console.log("issue with the code")
;await driver.quit();
}
finally{
await driver.quit();
}
}
example();
请查看我的依赖项:
- IE驱动版本=IEDriverServer_x64_3.150.1
- IDE = Visual Studio 代码
- Internet Explorer 版本 = 1909
- 操作系统 = Windows 10
- Node.js 使用的 Selenium webdriver 版本 = ^4.0.0-alpha.8
请查看使用中的 package.json:
{
"name": "webdriver",
"version": "1.0.0",
"description": "selenium example project",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "this newbie",
"license": "MIT",
"dependencies": {
"selenium-webdriver": "^4.0.0-alpha.8"
}
}
解决方案
推荐阅读
- django - 如何为队列中的用户过滤对象
- python - 如何避免使用 Python 的 Selenium Webdriver 中的 SSL 认证错误?
- excel - Excel vba使用字典循环提取数据
- python - 当您的计算机处于睡眠模式时,您可以让它运行 python 吗?
- ios - 如何通过 API 使用后台任务?
- arrays - 在laravel中检索与外键匹配的所有数据
- javascript - 附加后如何从子类中删除父类样式
- azure - 使用 MSI 与 Azure 文件共享的连接不起作用
- dll - 为 MT4 或 MT5 创建 DLL?
- python - 大协方差(半正)矩阵的特征值