4

在 Taiko 测试中获取 DOM 元素的最佳方法是什么?

在浏览器控制台中,我可以这样做:

element = document.getElementsByClassName("XXXX")[0]

我试过element = await $('.XXXX').get()[0];使用 Taiko 的$选择器(https://taiko-preview.gauge.org/# $)。但这似乎并没有给出实际的 DOM 元素(只是一个 Taiko ElementWrapperhttps://taiko-preview.gauge.org/#elementwrapper))。

对于上下文,我想要 DOM 元素的原因是因为我想做element.parentElement然后查看一些要在我的测试中使用的属性。

我对 Taiko 比较陌生,因此非常感谢任何帮助。

谢谢

4

2 回答 2

1

您可以在这里使用 Taiko 中的评估方法。例如,要从父元素中获取类名,您可以这样做

evaluate(()=>{var a = document.getElementsByClassName('XXXX')[0]; return a.parentElement.className})
于 2019-03-04T07:00:46.487 回答
1

您可以使用评估方法来获取 DOM 元素。您可以从此方法返回属性值或设置它们的值。这是示例,

 // For getting an attribute value
 const color = await evaluate(textBox({ class: 'username' }), (element) => {
    return element.style.color;
 });

 // For setting/getting an attribute
 const updatedMaxLength = await evaluate(textBox({ class: 'username' }), (element) => {
    element.setAttribute('maxlength', 20);
    return element.getAttribute('maxlength');
 });

在你的情况下,它应该是,

 const inputMaxLength = await evaluate(textBox({ class: 'username' }), (element) => {
    return element.parentElement.className
 });

您还可以使用元素的XPath与评估方法一起使用,

const passwordXpath = `//input[@type="password"]`;
const passwordMaxLength = await evaluate($(passwordXpath), (element) => {
    return element.getAttribute('maxlength');
});
于 2020-01-29T06:37:59.677 回答