1、使用PageObject模式写代码的时候:
expect(element(by.binding('notPresent')).isPresent()).toBe(false);
这句代码需要分开写:page中写:greeting=element(by.binding('notPresent')).isPresent();test中写expect(greeting).toBe(false);
2、代码中需要这句:
browser.ignoreSynchronization = true;
不然代码会在11s后报错;
3、element(by.css())=$;
如:
LMCCHome_input=element(by.css((".actions li #mcc")); 可以定义成 LMCCHome_input=$(".actions li #mcc");
4、element.all(by.css())=$$;
如:
LMCCHome_input=element.all(by.css((".actions li #mcc")); 可以定义成 LMCCHome_input=$$(".actions li #mcc");
5、运行脚本报错:SessionNotCreatedError: Unable to create new service: ChromeDriverService
问题原因:chrom和chromedriver没有更新到最新版本
解决办法:
webdriver-manager update --chromedriver
6、目录结构:C:\Pratractor ui automation\protractor\test\e2e\protractor.conf.js,nodemodel的目录为:C:\Pratractor ui automation\protractor\node_modules这里面的都是脚本中需要的模块,如果采用本地安装就会安装在这个目录下,如果采用全局安装:eg.
npm install -g request
8、在一个目录下通过npm安装模块,该目录下会生成一个node_models文件夹和一个package.json文件。
9.jenkis集成报错:
10. protractor最好使用全局安装:
1、只本地安装无法运行脚本;
2、只全局安装,必须启动
seleniumAddress: 'http://localhost:4444/wd/hub'设置,不然会报错:Could not find chromedriver
3、全局和本地同时安装:
1、执行了:webdriver-manager update,
node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver会装在全局变量中,本地相应的路径不会安装;需要把node_modules\protractor\node_modules\webdriver-manager\selenium包弄到本地对应的包中就运行通过。
11.只通过一条命令运行脚本:
1)注释掉 seleniumAddress:http://localhost:4444/wd/hub;
2)把protractor安装在本地,并且保证node_modules\protractor\node_modules\webdriver-manager\selenium包中有chrome.driver
这样服务器会自动分配一个端口给webdriver server;
12.使用firefox执行浏览器,当没有安装firefox的时候,windows下报错如下:
当没有安装chrome的时候,windows下报错如下:
13.protractor的目录层级:(想以一个大菜单为一个文件夹,里面写case)
1)如果要在page-specs里面再建文件夹,里面文件夹的js脚本引用需要写绝对路径;
2)也可能建和page-spece平级的文件夹: