Javascript 傀儡玩家页面。评估路径与测试ID

Javascript 傀儡玩家页面。评估路径与测试ID,javascript,web-scraping,screen-scraping,end-to-end,puppeteer,Javascript,Web Scraping,Screen Scraping,End To End,Puppeteer,我试图从木偶演员e2e测试中的一个div中获取值。html和js的图片看起来有点像这样。问题在于结果。当我用id的值运行这段代码时,它的结果实际上是“”,只是控制台中的一个空行 但是,如果我将“[data testid=“TestID10”]”与注释的代码行交换,我会在控制台中得到正确的响应“Hello World”。(注意:使用Puppeter时,使用完整的html选择器路径不是一个好的做法) 有人能告诉我为什么这个不能用身份证吗?既然使用HTML选择器是一种很糟糕的做法,那么我该如何解决这个

我试图从木偶演员e2e测试中的一个div中获取值。html和js的图片看起来有点像这样。问题在于结果。当我用id的值运行这段代码时,它的结果实际上是“”,只是控制台中的一个空行

但是,如果我将“[data testid=“TestID10”]”与注释的代码行交换,我会在控制台中得到正确的响应“Hello World”。(注意:使用Puppeter时,使用完整的html选择器路径不是一个好的做法)

有人能告诉我为什么这个不能用身份证吗?既然使用HTML选择器是一种很糟糕的做法,那么我该如何解决这个问题呢

亲切的问候!
const value1=等待页面
.waitForSelector(“[data testid=“TestID10”]”)
.然后(()=>{
还愿(
page.evaluate((路径)=>{
返回窗口.document
.querySelector(路径)
价值
},“[data testid=“TestID10”]”
)
});
console.log(value1);
//},“0-row-0>div>div.TableCell.row-0.col-0.TextInputCell>div”)

你好词

下面这句话对我很管用。注意,我将
选择器
放入
变量
中,而不是使用字符串。我还返回
innerText
而不是
,如您的示例所示。嗯

const puppeteer = require('puppeteer'); 

async function run() { 

const htmlStr = '<!doctype html><html><head></head>' +
  '<body><div class="TextInputCell" data-testid="TestID10">' +
  '<span class="value">Hello Word</span></div></body></html>';

  const browser = await puppeteer.launch({
      headless: false
  });
  const page = await browser.newPage();
  await page.setContent(htmlStr);    

  const selector = '[data-testid="TestID10"]';
  await page.waitForSelector(selector);

  var innerText = await page.evaluate((sel) => {
        return document.querySelector(sel).innerText;
  }, selector);

  console.log(innerText);

  browser.close();

};

run();
const puppeter=require('puppeter');
异步函数run(){
常量htmlStr=''+
'' +
“你好词”;
const browser=wait puppeter.launch({
无头:错
});
const page=wait browser.newPage();
等待page.setContent(htmlStr);
常量选择器='[data testid=“TestID10”];
等待页面。等待选择器(选择器);
var innerText=等待页面。评估((sel)=>{
返回文档.querySelector(sel).innerText;
},选择器);
log(innerText);
browser.close();
};
run();

非常感谢您通知我。似乎我的代码也能正常工作,但当我实现你的代码时,我注意到div上面有一个空的输入字段。不知怎的,这个输入字段有完全相同的测试数据。这导致我的控制台出现空行。非常感谢你这么快就帮了我!