量角器JavaScript获取文本标记h1
我正在努力从web元素中获取文本。我想将文本返回给函数调用方,但它总是返回null量角器JavaScript获取文本标记h1,javascript,protractor,Javascript,Protractor,我正在努力从web元素中获取文本。我想将文本返回给函数调用方,但它总是返回null <div _ngcontent-pet-c4 class="intro-content"> <h1 _ngcontent-pet-c4>Hello World Welcome!</h1> </div> 函数总是返回null 第1期。更改css选择器 元素(by.css(“.intro content h1”) 问题2。承诺包装你的代码 as
<div _ngcontent-pet-c4 class="intro-content">
<h1 _ngcontent-pet-c4>Hello World Welcome!</h1>
</div>
函数总是返回null 第1期。更改css选择器 元素(by.css(“.intro content h1”) 问题2。承诺包装你的代码
async function loadWebsite(url)
{
return new Promise(async(resolve,reject)=>{
try{
await browser.get(url);
await browser.sleep(5000);
browser.ignoreSynchronization = true;
let eleWelcomeTxt = element(by.css(".intro-content h1"));
await browser.wait(EC.textToBePresentInElement(eleWelcomeTxt), 5000);
let text = await eleWelcomeTxt.getText();
return resolve(text);
}catch(err){
console.log("exception error: " + err.message);
return reject();
}
})
}
根据,EC.texttobepresentElement方法接受2个参数
EC.textToBePresentInElement(element, elementText)
实际上,我不太确定您正在尝试做什么,请给出一个如何验证元素中文本的示例:
/*
* get element Text
* @param container - the container of the desired element
* @param elementToGet - the class name of the element to get
* @param value - value to check
*/
expectElementTextToEqual: function (container, elementName, expectedVal) {
ptor.ignoreSynchronization = true;
this.elementloadedInDOM(container);
let cont = element.all(by.className(container)).first();
cont.isDisplayed();
let el = cont.all(by.className(elementName)).first();
el.isEnabled();
el.isDisplayed();
expect(el.getText()).toEqual(expectedVal);
},
webdriver.WebElement.getText将获取此元素的可见内部文本,包括子元素。@Bharath Kumar S,谢谢,是否可以编写更简单的代码?谢谢回复。基本上,我尝试从承诺中返回纯文本。如果我使用“expect()”,这没有问题,但我没有在这里测试有效文本。我只想将文本返回给调用方。
量角器
API是异步的,因此您的return retText;
将在eleWelcomeTxt.getText()之前执行
,因此retText
始终为空。
/*
* get element Text
* @param container - the container of the desired element
* @param elementToGet - the class name of the element to get
* @param value - value to check
*/
expectElementTextToEqual: function (container, elementName, expectedVal) {
ptor.ignoreSynchronization = true;
this.elementloadedInDOM(container);
let cont = element.all(by.className(container)).first();
cont.isDisplayed();
let el = cont.all(by.className(elementName)).first();
el.isEnabled();
el.isDisplayed();
expect(el.getText()).toEqual(expectedVal);
},