Protractor 量角器.sendKeys()和browser.executeScript(“参数[0].textContent=arguments[1];”单元格,值)对非输入字段不起作用

Protractor 量角器.sendKeys()和browser.executeScript(“参数[0].textContent=arguments[1];”单元格,值)对非输入字段不起作用,protractor,Protractor,我正在用TypeScript编写带有量角器和Jasmine的自动测试,但我不能修改表中非输入字段的内容 我已经尝试过使用dragrator.sendKeys()和browser.executeScript(“参数[0].textContent=arguments[2];”,单元格,值) progrator.sendKeys()未能按我的意愿修改它,而是在单元格中创建了“0”值 browser.executeScript(“arguments[0].textContent=arguments[2]

我正在用TypeScript编写带有量角器和Jasmine的自动测试,但我不能修改表中非输入字段的内容

我已经尝试过使用dragrator.sendKeys()和browser.executeScript(“参数[0].textContent=arguments[2];”,单元格,值)

progrator.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);
有问题的单元格的DOM

桌子本身
我希望在表中修改值并按下“保存”按钮后,这些值会被修改和保留更新后的答案:

根据您在评论中对用户交互的描述,我认为在这种情况下,向浏览器发送击键应该对您有用

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);

任何问题都让我知道

最后,以下解决方案对我有效:

    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);

您能在html中显示包含单元格中值的属性吗?快照已根据单击单元格时发生的情况进行更正?是否更改了DOM并显示了任何输入?可能您需要指向该字段在我单击单元格后,嵌套的span标记显示为空文本,如果我没有键入任何文本,然后单击另一个单元格,span标记将消失。实际用户单击该字段的预期行为是否会变为焦点,然后他们可以键入?您好,在单元格元素中找不到span子标记。跨度仅在单击单元格后显示。但是,这样它也表示无法定位span元素:wait cell.click();const spanthattainsasvalue=cell.element(按.tagName('span'))。。。我已经更新了答案,是否可以测试发送击键的方法,并告诉我是否还有问题?@DublinDev我认为您需要先单击单元格,然后选择之后显示的范围clicking@JavierFromMadrid可能是的,但我认为这种方法也应该起作用,因为这基本上是真实用户与字段交互的方式。当海报试用时,我们应该知道更多谢谢,但我同时找到了解决办法。const spanthattainsvalue=cell.element(按.tagName('span'));-这一行会导致一个错误,因为span元素可能只有在单击单元格后才会添加到dom中。动作链也没用