在我的测试中,我有一个按钮,用于浏览我的光盘和选择一个文件。
我想使用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);
});
我发现没有必要将页面滚动到正在使用的元素,因为它的存在是量角器唯一需要的东西......希望对:)有所帮助