Javascript 无法将css宽度断言为100%

Javascript 无法将css宽度断言为100%,javascript,css,testing,bdd,nightwatch.js,Javascript,Css,Testing,Bdd,Nightwatch.js,我试图断言NightwatchJS中元素的CSS宽度为100%,但它没有说宽度为196px。错误消息是: 测试元素是否有错误 css属性“宽度:100%”-预期为“100%”,但得到“196px” 我已尝试使用以下语法进行相同的操作: page.assert.cssProperty(`@button-element`, 'width', '100%'); page.expect.element(`@${element}`).to.have.css("width").which.equals("1

我试图断言NightwatchJS中元素的CSS宽度为100%,但它没有说宽度为196px。错误消息是:

测试元素是否有错误 css属性“宽度:100%”-预期为“100%”,但得到“196px”

我已尝试使用以下语法进行相同的操作:

page.assert.cssProperty(`@button-element`, 'width', '100%');
page.expect.element(`@${element}`).to.have.css("width").which.equals("100%");
我不想使用硬编码的值,因为它们可以根据容器的宽度而改变。正确的方法是什么


我在这里使用页面对象模型,但可以不使用它。

为什么不先得到父对象的宽度,然后是子对象的宽度,并对它们进行比较以计算百分比

我自己不使用nightwatch,但是您上面描述的psuedo代码应该是以下内容:

const {expect} = require('chai');
let buttonParentSize = page.get.cssProperty(`@button-parent`, 'width'),
    buttonSize = page.get.cssProperty(`@button-element`, 'width'),
    buttonSizePercentage = (buttonSize / buttonParentSize)*100;

expect(buttonSizePercentage).to.equal('100');

谢谢,凯尔。我正在尝试创建通用步骤定义,它可以解释特征定义。编写这些特性的人不应该关心这些复杂的问题。您可以使用xpath来定位元素,这将使这些人更容易找到这些元素<代码>/*[包含(@class,'button-continue')]用于按钮,而
/*[包含(@class,'button-continue')]/..
用于父级-然后遵循与上述相同的逻辑。唯一的更改是类、id、名称(无论您想用xpath选择什么),并与它的直接父级进行比较。你可以把它变成一个增加用途的函数。让我试试@kyle,看看效果如何。我尝试了这种方法,并取得了成功。非常感谢。{return api.getElementSize(elementA,函数(resultA){return api.getElementSize(elementB,函数(resultB){return api.perform(()=>dumbAssertion(resultA.value[property],resultB.value[property]);}}