如何使用操纵up选择表亲的内部文本

时间:2020-10-06 22:22:36

标签: puppeteer playwright

我正在尝试根据一个表亲的字符串值获取电话号码。

我的目标是搜索“所有者”,最后输入电话号码的值。

AGE^2

这是我到目前为止的内容,但是我不断得到Y ~ X1。你能解释我在做什么错吗?

Y ~ X2

1 个答案:

答案 0 :(得分:2)

有一些问题:

  1. page.$()需要CSS选择器,而不是XPath。
  2. page.$x()将返回一个带有ElementHandle-s的数组。
  3. ElementHandle-s与DOM元素的属性不同,我们需要使用更复杂的API来获取它们。
  4. 我无法让伪娘只用完整的URL用a href创建'#'元素,但这可能是一个测试用例。

这对我有用:

const html = `
  <!doctype html>
  <html>
    <head><meta charset='UTF-8'><title>Test</title></head>
    <body>
      <div>
          <h3>
              <a href="http://example.com/">Owner</a>
          </h3>
          <p>
              (555) 555-5555
          </p>
      </div>
    </body>
  </html>`;

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    await page.goto(`data:text/html,${html}`);

    const data = await (
      await (
        await page.$x("//h3[contains(a, 'Owner')]/../p")
      )[0].getProperty('innerText')
    ).jsonValue();
    console.log(data);

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();