当前位置: 首页 > 知识库问答 >
问题:

Puppeteer-通过xPath获取元素

佴涵蓄
2023-03-14

嗨,我一直在到处寻找一个非常简单的解释,如何通过xPath找到一个元素。

我想要的只是一种简单的方法来寻找一个元素,但是我想要找到的所有帮助都需要一个页面。evaluate()。这对我不管用。以下是我想做的:

加载URL

这是我的代码:

          await page.goto(url, { waitUntil: 'networkidle0' });

          console.log("Page Loaded");

          let loggedIn = await page.evaluate(() => {

            let emailInput = document.evaluate("//input[@type='email' and @placeholder='Email address']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

            return{
              emailInput
            }

          });
          
          console.log(loggedIn);

当我执行waitill:'load'

我得到未定义时,我做等待直到:'networkidle0'

有没有更简单的方法来获取元素?也许是。。。。

page.getElementByXPATH(xpath)

共有1个答案

马航
2023-03-14

不幸的是,page。evaluate()只能传输可序列化的值(大致上是JSON可以处理的值)。作为文档。evaluate()返回一个或多个不可序列化的DOM元素(它们包含方法和循环引用),这些元素被替换为空对象或未定义。您需要返回可序列化的值(例如,文本、属性或它们的数组/对象)或使用类似于page的内容$x(xpath)和更复杂的ElementHandleAPI。

 类似资料:
  • HTML部分: 下面是我正在尝试的Xpath: 但是得到例外: 无效的选择器:由于以下错误,无法找到 xpath 表达式为 //li[文本()=//li[. = 'admin'] 的元素: 语法错误:未能对“Document”执行“evaluate”:字符串“//li[text()=//li[。= 'admin']'不是有效的XPath表达式。 精确查看UI和超文本标记语言代码: 该字段会自动完成

  • 我正在尝试从网页复制一个文本元素并在我的控制台中打印它,作为对未来项目的测试。 这些是我收到错误时的行: 错误是这样的: 然后我的chomedrive关闭了。有什么问题?

  • 我使用了以下代码, 这会引发错误“表达式不是合法表达式”。“代码:“12”nsresult:“0x805b0033(SyntaxError)”位置:”“]”。 当我缩小搜索范围到 它工作正常,我得到了特定行中的所有文本。然而,当我将其扩展到特定于第1个代码中所示的列时,我得到了错误。 html代码段,

  • 问题内容: 我的网页中有9行6列的表格。我想搜索文本“ MakeGoodDisabled- Programwise_09_44_38_461(n)”并获取单元格的xpath。我使用了以下内容,但由于无法在页面上找到文本而失败。你能帮忙吗?我正在使用Selenium Webdriver Junit对此进行编码。 问题答案: 我的意图是在表中查找文本并在同一行中获取相应的下一列值。我以为我将用所需的列

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码:

  • 我有一个非常简单的问题,我有一个div在一个html页面,我可以通过他的XPath访问这是:。 我想要一个XPath,可以提供这个div的所有子元素,但我找不到它。我需要用硒的findElements方法获取元素,但我测试的方法不起作用: 我的超文本标记语言代码如下: 我想这样使用XPath: 我的Java Selenium脚本如下: 我应该使用什么XPath来获取的子级? 编辑1:我确实使用了*