programing

프로젝터 콘솔 로그

css3 2023. 3. 31. 22:32

프로젝터 콘솔 로그

지금까지 다음과 같은 작업을 수행했는데, 내 영사기 테스트에서 div 텍스트를 출력하려고 합니다.

console.log(ptor.findElement(protractor.By.id('view-container')).getText());

하지만 이 출력은

[object Object]

"toString()"을 시도했는데 같은 결과가 나왔습니다.

콘솔에 텍스트를 출력하는 방법이 있습니까?

getText그리고 대부분의 다른 익트랙터 메서드는 약속을 반환합니다.이 모든 걸 넣고 싶다.console.log약속 결의안 내의 스테이트먼트:

새로운 Protractor 구문 사용:

element(by.id('view-container')).getText().then(function(text) {
  console.log(text);
});

이건 꽤 오래되었지만, 전 n00b 로서, 나는 더 많은 문서가 있었으면 했다.

다음 항목도 사용할 수 있습니다.

element(by.id('view-container')).getText().then(console.log);

또는 가독성을 위해 모든 오브젝트를 자신의 기능, 섹션 또는 파일로 페이지에 배치하는 것을 좋아합니다.

//top declaration of variables
var viewContainer = element(by.id('view-container')).getText();

.... //bunch of code
....

viewContainer.then(console.log);

이것으로 원예변수 디버깅 요구의 대부분을 처리할 수 있습니다.

일반적인 약속에 대해서는protractor.promise.all()

둘 다 약속하는 두 가지가 있다고 칩시다.

var getTime      = element(by.xpath(theTimeXpath)).getText();
var getPageTitle = element(by.xpath(thePageTitle)).getInnerHtml();

protractor.promise.all([getTime, getPageTitle]).then(function(theResultArray){

  var timeText           = result[0];
  var pageTitleInnerHtml = result[1];

   console.log(timeText);           // outputs the actual text
   console.log(pageTitleInnerHtml); //outputs the text of the Inner html
});

이 두 번째 방법은 일이 더 복잡해지기 시작할 때 유용하다. 하지만 개인적으로, 나는 이 문제를 해결할 다른 방법을 찾는다.나쁘지 않지만 다른 개발자들이 내 코드를 읽어야 하기 때문에 좀 펑키한 느낌이다.

저는 다른 답변에 대해 약간의 개선을 제안하고 싶습니다.

짧은 답변: 저는 사용하는 것을 좋아합니다.browser.sleep(0).then(..);견인기의 흐름에 무언가를 밀어 넣어야 하는 곳이죠

일반적이고 이동하기 편합니다.

dr;dr

따라서 위의 내용을 사용하여 다음과 같은 기능을 브라우저(또는 ptor)에 쉽게 추가할 수 있습니다.

browser.log = function( logger, level, msg ){
     browser.sleep(0).then(function(){ logger[level](msg); });
}

아니면 좀 더 세련된 걸로apply- 하지만 그건 로거에 따라 다르죠.

api와 같은 logger를 사용하기 위해 조금 더 강화될 수 있습니다.

var logger = browser.getLogger('name');

다음과 같이 실장할 필요가 있습니다(log4gl을 상정합니다).

browser.getLogger = function( name ){
        var logger = require('log4js').getLogger(name);

        function logMe( level ) {
                 return function(msg ){
                      browser.sleep(0).then(function(){ logger[level](msg); });
                 }

        }

        return { info : logMe('info'), ... }
}

기본적으로 하늘은 한계입니다.

내 코드를 훨씬 더 짧게 만드는 방법이 있을 거야 요점은sleep메서드를 기반으로 합니다.

수신한 텍스트가 예상하는 텍스트라고 항상 주장할 수 있는 텍스트는 다음과 같습니다.

expect(element(by.id('view-container')).getText()).toBe('desired-text');

다음 것을 시도해 보십시오.

const textInfo = element(by.id('view-container'));
console.log('text: ', textInfo.getText());

사용자가 예상된 결과와 실제 결과를 영사기에 기록하려는 경우 항상 메서드 구현을 사용합니다.

verifyDisplayedText(locator: Locator, expectedText: string) {
const text = this.getText(locator);
try {
text.then(function(value){
if (value.trim() === expectedText) {
verifyLog("VERIFICATION: PASSED. Expected: '" + expectedText + "' Actual: '" + value+"'");
} else {
errorLog("VERIFICATION: FAILED. Expected: '" + expectedText + "' Actual: '" + value+"'");
}
});
expect(text).toBe(expectedText);
}catch (error1) {
errorLog("VERIFICATION: FAILED. Expected: '" + expectedText + "' Actual: '" + text+"'");
throw error1;
}
}

2021년이라면 이 답을 읽고 싶을 것이다.

protractors 문서에 따르면 .getText()는 약속을 반환합니다.Promise is a Object is javascript.이게 당신이 기록하려는 거군요

약속을 해결함으로써 그 가치를 얻을 필요가 있다

2021년 현재 약속을 처리하는 가장 좋은 방법은async/await키워드를 지정합니다.가 '' 가 되어 다음때까지 .

it('test case 1', async () => {
  let text = await ptor.findElement(protractor.By.id('view-container')).getText();
  console.log(text);
  // or directly
  console.log(await ptor.findElement(protractor.By.id('view-container')).getText(););
})

.then()만, 「 」를 해 주세요.async/await코드를 훨씬 읽기 쉽고 디버깅하기 쉽게 만듭니다.

언급URL : https://stackoverflow.com/questions/19941739/protractor-console-log