为了账号安全,请及时绑定邮箱和手机立即绑定

如果另一个元素包含特定文本,请单击该元素。使用 Protractor 进行自动化测试

如果另一个元素包含特定文本,请单击该元素。使用 Protractor 进行自动化测试

largeQ 2022-12-02 16:49:47
我需要检查 3 个元素中的哪一个包含文本“10%”,但我不确定我是否正确获取了该元素的文本。当我运行代码时,我没有收到错误,但 if 条件始终为 false(当它应该为 true 时)。我在规范中的 javascript 代码:await driver.wait(until.elementIsVisible(await driver.findElement(By.css("tr:nth-child(1) .font-weight-bold-light > span"))), 30000)await driver.wait(until.elementIsVisible(await driver.findElement(By.css("tr:nth-child(2) .font-weight-bold-light > span"))), 30000)await driver.wait(until.elementIsVisible(await driver.findElement(By.css("tr:nth-child(3) .font-weight-bold-light > span"))), 30000)var array = ["tr:nth-child(1) .font-weight-bold-light > span", "tr:nth-child(2) .font-weight-bold-light > span", "tr:nth-child(2) .font-weight-bold-light > span"];var arrayDelete = ["tr:nth-child(1) img:nth-child(2)", "tr:nth-child(2) img:nth-child(2)", "tr:nth-child(3) img:nth-child(2)"]for (var k = 0; k<array.length; k++){  var allOpts = (await driver.findElement(By.css(array[k])));  await driver.sleep(2000)  if (allOpts == ('10%')) {    await driver.sleep(2000)    await driver.wait(until.elementIsVisible(await driver.findElement(By.css(arrayDelete[k]))), 30000)    // 11 | click | css=.actions > img:nth-child(2) |     await driver.findElement(By.css((arrayDelete[k]))).click()    // 12 | pause | 1000 |     await driver.sleep(5000)    // 13 | waitForElementVisible | css=.ml-3 | 30000    await driver.wait(until.elementIsVisible(await driver.findElement(By.css(".ml-3"))), 30000)    // 14 | click | css=.ml-3 |     await driver.findElement(By.css(".ml-3")).click()    // 15 | pause | 3000 |     await driver.sleep(10000)    // 16 | verifyElementNotPresent | css=td:nth-child(1) |     {      const elements = await driver.findElements(By.css((allOpts)))      assert(!elements.length)    }    console.log(('ho cancellato l obiettivo ')+ k);    } else {    console.log(('obiettivo ') + k + (' non cancellato, in quanto il suo peso non è 10%'));  }}
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您错过了调用getText()以阅读 web 元素上的内容

var allOpts = (await driver.findElement(By.css(array[k])).getText()).trim()


查看完整回答
反对 回复 2022-12-02
?
桃花长相依

TA贡献1860条经验 获得超8个赞

首先,您的语法对于量角器来说并不典型(除非您使用的是一些非常旧的版本)。如果这是您正在使用的工具,请查看他们的文档

其次,在这一行中,您只是声明元素而不对其进行任何操作

var allOpts = (await driver.findElement(By.css(array[k])));

您应该已经提取了元素的文本。但是使用普通语法它看起来像这样

var allOpts = await element(by.css(array[k])).getText();

三,这不起作用的原因

if (allOpts.getText() == (' 10% '))

是因为这是 promise,你需要通过.then()or by awaiting 来解决它。除非你深入了解这个过程(我是认真的......在所有细节中),否则你不会对量角器走得太远

第四,当你这样做时,你.getText()的字符串会被修剪,这意味着开头和结尾都没有空格('10%'不是' 10% '

五,当有疑问时,只是console.log()价值。这是调试问题的最简单方法

最后,不要使用=====而是使用 。在使用量角器 3 年的时间里,我从来没有遇到过必须使用的情况,但是在使用它时==我确实遇到过强制造成的许多困惑


查看完整回答
反对 回复 2022-12-02
?
慕后森

TA贡献1802条经验 获得超5个赞

首先,您需要阅读元素的文本,即使用getText().



查看完整回答
反对 回复 2022-12-02
  • 3 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信