我正在用TypeScript用Protractor和Jasmine编写自动化测试,但是我不能修改表中非输入字段的内容。
我已经尝试过使用量角器.sendKeys()和browser.executeScript(“ arguments [0] .textContent = arguments [2];”,单元格,值)。
量角器.sendKeys()无法按我的意愿进行修改,而是在单元格中创建了“ 0”值。
browser.executeScript(“ arguments [0] .textContent = arguments [2];”,单元格,值)确实至少在视觉上更改了单元格中的值。但是,一旦我尝试按页面上的“保存”按钮保存更改,更改将被放弃,并且单元格的值将恢复为默认值。
我也尝试了不使用.click()和.sendKeys()的情况。不起作用。
我的代码:
const index = await this.components.indexOf(componentName);
const cell = await element(by.css('[row-index="'+index+'"] [col-id="value"]'));
await cell.click();
await cell.sendKeys(value);
await browser.executeScript("arguments[0].textContent= arguments[1];", cell, value);
答案 0 :(得分:1)
更新后的答案:
基于您如何在评论中描述用户交互,我认为在这种情况下,将击键发送到浏览器应该适合您。
const index = await this.components.indexOf(componentName);
const cell = await element(by.css('[row-index="'+index+'"] [col-id="value"]'));
const spanThatContainsValue = cell.element(by.tagName('span'));
//Click on the cell in order to set the focus on field
await cell.click();
//Send the keystrokes to the focused field
await browser.actions().sendKeys(value).perform();
//use delay while testing so you can manually check if entered in field
await browser.driver.sleep(10*1000);
任何问题都让我知道
答案 1 :(得分:0)
最后,以下解决方案对我有用:
const index = await this.components.indexOf(componentName);
const cell = await element(by.css('[row-index="'+index+'"] [col-id="value"]'));
await cell.click();
await browser.switchTo().activeElement().sendKeys(value);
await cell.sendKeys(Key.ENTER);