我遇到一个问题,在开始执行it块之前,在我的beforeEach块中我导航到特定的URL。但是,有时it块在beforeEach块导航到URL之前运行。这将导致找不到元素错误。我尝试添加完成的参数,但无济于事。任何帮助都非常感谢
describe('Asset Manager [PREP]', function () {
beforeAll( async function() {
await Login.login( LOGIN.VALID.ADMIN.USERNAME,LOGIN.VALID.ADMIN.PASSWORD );})
beforeEach( async function() {
await browser.get( browser.baseUrl + 'asset_manager/import' );
});
for ( ASSET in ASSET_MANAGER.REGRESSION_PREP.ASSETS ) {
case_params( ASSET_MANAGER.REGRESSION_PREP.ASSETS[ASSET] );
}
function case_params( ASSET ) {
it('Upload: '+ ASSET.UPLOAD_NAME + ' Asset' , async function () {
let FTP = ASSET_MANAGER.REGRESSION_PREP.FTP
expect( await GlobalLayoutHeader.getAppNameFromHeader() ).toBe( 'Asset Manager' );
var ImportAssets = AssetManager.ImportAssets;
await ImportAssets.importFTPAsset(
FTP.SERVER,
FTP.USERNAME,
FTP.PASSWORD,
ASSET.FILE_PATH,
ASSET.IMAGE_PATH,
ASSET.UPLOAD_NAME + ' [RegressionPrep]',
ASSET.DESCRIPTION,
);
});
};
1 Asset Manager [PREP]
√ Upload: Black Panther Asset (3 secs)
× Upload: Incredibles 2 Asset (0.587 sec)
- Failed: No element found using locator: By(css selector, #import_type)
答案 0 :(得分:0)
您检查过吗,可能有错误。也许是失败了。
beforeEach( async function(done) {
try {
await browser.get( browser.baseUrl + 'asset_manager/import' );
done()
} catch(e) {
done.fail(e)
}
);
答案 1 :(得分:0)
似乎您正在使用的循环可能有问题。使用for in loop
遍历元素时,应该已经将ASSET_MANAGER.REGRESSION_PREP.ASSETS中的值保存在ASSETS变量中。因此,当您致电
for(let ASSET in ASSET_MANAGER.REGRESSION_PREP.ASSETS){
ASSET_MANAGER.REGRESSION_PREP.ASSETS[ASSET]
}
您实际上是在打电话
for(let i =0; i < ASSET_MANAGER.REGRESSION_PREP.ASSETS.length;i++){
ASSET_MANAGER.REGRESSION_PREP.ASSETS[ASSET_MANAGER.REGRESSION_PREP.ASSETS[i]]
}
因此
可以实现相同的目的for(let ASSET in ASSET_MANAGER.REGRESSION_PREP.ASSETS){
ASSET
}
但是,这是一个较小的语法问题,而不是实际问题的原因。过去,我在循环中执行异步操作时遇到了一些问题,但对原因为何最不清楚。也就是说,您可以尝试将for in
更改为以下内容,看看是否有帮助?
for (let i = 0; i < ASSET_MANAGER.REGRESSION_PREP.ASSETS.length; i++) {
case_params(ASSET_MANAGER.REGRESSION_PREP.ASSETS[i]);
}