使用量角器在测试 E2E 中上传文件



在我的测试中,我有一个按钮,用于浏览我的光盘和选择一个文件。

我想使用function(el: WebElement),但我有一个错误:

import { ElementFinder, browser, by, element } from 'protractor';

语法错误:不能在模块外部使用导入语句

我的代码fic_test.js

it("Upload file",function(){
let filePath = "../../../PJ/a.jpg";
let fpath = path.resolve(__dirname,filePath);     
browser.get("...");
browser.sleep(5000);
browser.findElement(by.xpath('//button[contains(.," Télécharger un autre document ")]')).then(function(el: WebElement){
browser.executeScript("arguments[0].scrollIntoView(true);",el);
el.sendKeys(fpath);
});

我的项目中的文件:

conf
  • /conf.js
  • 测试/fic_test.js

我认为您将 Keys 发送到带有输入标签的元素,至少,这是它对我有用的唯一方法,并且从您的 xpath 来看,我认为您没有将 fpath 发送到正确的元素。 另外,看看我对类似帖子的回复,可能会有所帮助

更新以回答您的评论: 抱歉,我在工作的地方使用了这段代码,所以共享整个代码是不行的。 这就是我写你在问题中提到的测试的方式:

const EC = ExpectedConditions;
it('Upload file', () => {
const filePath = '../../../PJ/a.jpg';
const absolutePath = require('path').resolve(__dirname, filePath);
browser.get("...");
// maybe add here a little wait
browser.wait(EC.presenceOf($('cssSelector-of-ur-input-el')), 5000, 'ERROR: Input el. not found');
$('cssSelector-of-ur-input-el').sendKeys(absolutePath);
});

我发现没有必要将页面滚动到正在使用的元素,因为它的存在是量角器唯一需要的东西......希望对:)有所帮助

最新更新