例如,包含一个具有帮助函数x
的文件来调用Xpath函数:x('//a/@href')
您可以在单独的页中注册helper函数。evaluate()
函数。page.exposeFunction()
看起来很诱人,但它不能访问浏览器上下文(您需要document
对象)。
下面是一个使用$x()
注册帮助器函数的示例:
const puppeteer = require('puppeteer');
const helperFunctions = () => {
window.$x = xPath => document
.evaluate(
xPath,
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null
)
.singleNodeValue;
};
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://en.wikipedia.org', { waitUntil: 'networkidle2' });
await page.evaluate(helperFunctions);
const text = await page.evaluate(() => {
// $x() is now available
const featureArticle = $x('//*[@id="mp-tfa"]');
return featureArticle.textContent;
});
console.log(text);
await browser.close();
})();
(编辑-从文件中添加帮助程序)
window.$x = xPath => document
.evaluate(
xPath,
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null
)
.singleNodeValue;
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://en.wikipedia.org', { waitUntil: 'networkidle2' });
await page.addScriptTag({ path: './helperFunctions.js' });
const text = await page.evaluate(() => {
// $x() is now available
const featureArticle = $x('//*[@id="mp-tfa"]');
return featureArticle.textContent;
});
console.log(text);
await browser.close();
})();
问题内容: 如果不输入URL,我想让Tomcat自动在我的应用程序上下文中添加一个斜杠。 当我使用Jetty进行测试时,它会自动在应用程序的上下文中添加斜杠,但是Tomcat不会这样做。 我不确定一旦部署将命名上下文,因为我会将WAR交给其他人,因此HTML中的任何资源引用都是相对的。有什么方法可以让Tomcat自动添加重定向尾号到相同的上下文? 当前在Spring 3中使用Tomcat 7。 问
到目前为止我们只使用了C++内置的函数,然而也可以添加新函数。实际上我们已经见过一个函数定义了:main。main这个函数名很特殊,因为它表示程序开始执行的地方,但main函数的语法形式和其它函数定义一样: void 函数名(参数列表) { 语句 } 你可以为自己的函数任意定义名称,但不能命名为main或者其它C++关键字。参数列表指定了使用(或称为调用)新函数所需要提供的信息(如果有的话)
使用PHP-PDO和SQLite,我可以编写一个PDO调用来检查表中是否存在某一行(通过检查主键),如果不存在,则编写另一个PDO调用来创建该行。但我觉得应该可以在一个命令中实现……类似于“如果不存在,则创建表”。是否有类似“不存在时插入行”的内容?
我试图根据元素的id从超文本标记语言文件中读取文本,并将其显示在JTextPane中。但是,当我读取文本并显示它时,它不会进入新行。以下是正在读取的超文本语言标记的示例: 我从HTML页面读取的方法是: 我用来更新JTextPane中文本的方法是: 用户应该在文本框中输入命令,然后单击提交按钮,并根据输入的命令获取反馈。问题是,输入的每个命令都出现在同一行,而不是新行。 如果appendText为
当我添加测试JsonObject列表时,只有最后一个JsonObject被添加到JsonArray。我不明白为什么,因为我遵循oracle的留档。https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html 名为TestRun的类中的方法 Main(注意:我使用faker生成随机信息)
[![我想点击Male,它反映在文本区域的Gender旁边:Male] 例如,我得到了这个脚本,我想要一个选项,当我点击按钮Male,它显示在gender旁边:在里面,如果我点击Male,它就会显示在Male旁边,就像这个Male,faleme? 文本框的图像: