Javascript 为什么browser.get方法不转到指定的url?
我的文件夹结构如下: 我也跟着 我的package.json文件如下所示:Javascript 为什么browser.get方法不转到指定的url?,javascript,node.js,testing,protractor,Javascript,Node.js,Testing,Protractor,我的文件夹结构如下: 我也跟着 我的package.json文件如下所示: { "name": "node_cucumber_e2e", "version": "1.0.1", "description": "Sample E2E by Bill to learn cucumber and protractor", "main": "index.js", "scripts": { "start": "node index.js", "start-driver
{
"name": "node_cucumber_e2e",
"version": "1.0.1",
"description": "Sample E2E by Bill to learn cucumber and protractor",
"main": "index.js",
"scripts": {
"start": "node index.js",
"start-driver": "node .\\node_modules\\protractor\\bin\\webdriver-manager start",
"update-driver": "node .\\node_modules\\protractor\\bin\\webdriver-manager update",
"protractor": "node .\\node_modules\\protractor\\bin\\protractor configs/protractor.conf.js"
},
"keywords": [
"Sample_project",
],
"author": "",
"license": "MIT",
"devDependencies": {
"protractor": "^5.4.2"
}
}
我做以下事情:
npm运行更新驱动程序
npm运行启动驱动程序启动webdriver管理器
npm run grandor
启动量角器时,浏览器是打开的,但它不会转到我指定的url,控制台是this==>
我的spec js文件是,希望有人能帮我
describe('Protractor Demo App', function() {
it ('should have a title', function() {
browser.get('https://juliemr.github.io/protractor-demo/');
expect(browser.getTitle()).toEqual('Super Calculator');
});
});
这里需要注意的几件事:
directConnect=true
并选择headless
选项,以便在遇到问题时能够更好地进行调试。请参阅下面的代码片段以了解dragrator-conf.js
文件:
export const config:config={
directConnect:没错,
能力:{
'browserName':'chrome',
色度选项:{
//参数:[“--headless”,“--disable gpu”]
},
},
}
browser.get()&browser.getTitle()
是一个异步调用,因此您可以使用then()
或wait
为每个async
调用处理返回的调用
我更喜欢使用async/await
来处理此类调用,我会将spec
重写为:
description('量角器演示应用',()=>{
它('应该有一个标题',async()=>{
等待浏览器。获取https://juliemr.github.io/protractor-demo/');
expect(wait browser.getTitle()).toEqual('SuperCalculator');
});
});
在我看来,它有助于更有效地处理承诺,同时保持代码的整洁。
让我知道这是否适合你包.json中使用
"webdriver-update": "./node_modules/protractor/bin/webdriver-manager update"
与npm运行更新驱动程序不同,这里需要注意两件事:
调用selenium驱动程序运行测试的方式。还有其他的方法。我更喜欢使用directConnect=true
并选择headless
选项,以便在遇到问题时能够更好地进行调试。请参阅下面的代码片段以了解dragrator-conf.js
文件:
export const config:config={
directConnect:没错,
能力:{
'browserName':'chrome',
色度选项:{
//参数:[“--headless”,“--disable gpu”]
},
},
}
由于我们正在进行的browser.get()&browser.getTitle()
是一个异步调用,因此您可以使用then()
或wait
为每个async
调用处理返回的调用
我更喜欢使用async/await
来处理此类调用,我会将spec
重写为:
description('量角器演示应用',()=>{
它('应该有一个标题',async()=>{
等待浏览器。获取https://juliemr.github.io/protractor-demo/');
expect(wait browser.getTitle()).toEqual('SuperCalculator');
});
});
在我看来,它有助于更有效地处理承诺,同时保持代码的整洁。
让我知道这是否适合你
进一步改进:
要更新webdriver manager,请在包.json中使用
"webdriver-update": "./node_modules/protractor/bin/webdriver-manager update"
与您提供的教程中的npm run update driver
不同,您提供的教程调用了然后
关于browser.get
的返回值,这意味着browser.get
返回一个Promise
。您还应该调用然后
或切换到async/await
。我查看了browser.get
,这是一种误导,看起来这个方法是同步的,而不是同步的,查看browser.get
它肯定返回了Promise
@JakeHolzinger,量角器版本低于6(OP正在使用的版本)除非使用配置中的SELENIUM\u promise\u manager:false
设置显式禁用,否则承诺将在幕后使用webdriverJS的承诺管理器进行处理。这允许以上述方式编写异步操作。我不知道为什么那个教程是这样写的,因为那个不应该是必需的。OP,您可以尝试在之后添加浏览器.driver.sleep(5000)
。get
并验证与您提供的教程相同的行为调用,然后在浏览器的返回值上调用。get
,这意味着浏览器.get
返回承诺。您还应该调用然后
或切换到async/await
。我查看了browser.get
,这是一种误导,看起来这个方法是同步的,而不是同步的,查看browser.get
它肯定返回了Promise
@JakeHolzinger,量角器版本低于6(OP正在使用的版本)除非使用配置中的SELENIUM\u promise\u manager:false
设置显式禁用,否则承诺将在幕后使用webdriverJS的承诺管理器进行处理。这允许以上述方式编写异步操作。我不知道为什么那个教程是这样写的,因为那个不应该是必需的。OP,您可以尝试在之后添加浏览器.driver.sleep(5000)
。获取
并验证相同的行为吗