我被告知不要for...in在JavaScript中使用数组.为什么不?
我正在尝试将jquery注入我的puppeteer页面,因为document.querySelector不会为我剪切它:
async function inject_jquery(page){
await page.evaluate(() => {
var jq = document.createElement("script")
jq.src = "https://code.jquery.com/jquery-3.2.1.min.js"
document.querySelector("head").appendChild(jq)
})
const watchDog = page.waitForFunction('window.jQuery !== undefined');
await watchDog;
}
Run Code Online (Sandbox Code Playgroud)
结果是它大部分时间超时.有没有人有办法解决吗?
如果我的页面中有一些内容,例如:
<a>Hi!</a>
Run Code Online (Sandbox Code Playgroud)
如何使用Google的Puppeteer自动点击该元素?
我需要能够仅根据其内容而不是id,class或attribute来选择它。
$('a:contains("Hi!")')我可以利用这种东西来选择此元素吗?
如何使用https://github.com/GoogleChrome/puppeteer做到这一点
谢谢
所以问题是 - 如何等待元素具有某个值?例如,某个页面上的某个按钮会将输入字段的值从"无值"更改为"值X".问题是 - 我不知道需要多少时间,因此page.waitFor()不是一个选项.我以为我可以使用page.waitForSelector(input:contains('No Value')); 但据我所知,这并不奏效.可能page.waitForFunction()应该工作,但我不确定在那里写什么函数(page.evaluate返回输入的值可能?).
我试图单击页面中的多个元素,但前提是它们可见。使用 selenium (使用)这非常容易is_displayed,但我似乎无法在 puppeteer 中找到方法。我试图使用类似的东西
try {
await page
.waitForSelector(id, visible=true, timeout=0)
.then(() => {
element.click()
});
...
Run Code Online (Sandbox Code Playgroud)
但如果它是一个简单的元素,例如:
<a class="cookie-close" href="#">
OK
</a>
Run Code Online (Sandbox Code Playgroud)
我似乎也看不到使用element.click木偶操作者中的方法来做到这一点的方法。
我需要通过 xpath 查找 DOM 中的任何元素。我已经尝试过以下操作:
let el = await page.$x('//*[@id="readium-right-panel"]/ul/li[1]');
Run Code Online (Sandbox Code Playgroud)
返回的错误是:
类型错误:page.$x 不是函数
我需要选择 ID 包含方括号的元素。
IE
#element[0]
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到:
错误:未能找到与选择器“element[0]”匹配的元素
我已经用 转义了选择器中的元素\,但这不起作用。
page.select("#fruit\[0\]", "apples")
Run Code Online (Sandbox Code Playgroud)
双反斜杠转义也不起作用。IE:
page.select("#fruit\\[0\\]", "apples")
Run Code Online (Sandbox Code Playgroud)
更新:我试图选择的元素:
<select id="fruit[0]">
<option>Please make a selection</option>
<option>apples</option>
</select>
Run Code Online (Sandbox Code Playgroud)
注意:即使我尝试在上面的查询中使用 page.waitFor 方法,我也会遇到同样的错误。
javascript google-chrome-devtools google-cloud-functions puppeteer