当我向下滚动时,我处于创建新内容的情况.新内容具有特定的类名.
如何继续向下滚动直到所有元素都已加载?换句话说,我想达到一个阶段,如果我继续向下滚动,没有新的东西会加载.
我正在使用代码向下滚动,再加上一个
await page.waitForSelector('.class_name');
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是,在加载所有元素之后,代码继续向下滚动,没有创建新元素,最终我得到超时错误.
编辑:这是代码
await page.evaluate( () => {
window.scrollBy(0, window.innerHeight);
});
await page.waitForSelector('.class_name');
Run Code Online (Sandbox Code Playgroud) 当我尝试在我的 Win 7 x64 机器上运行使用 Code::Blocks 编译的可执行文件时,它说它无法运行,因为缺少 libgcc_s_dw2-1。
我找到了一个解决方案,将库包含在链接器选项中。(这是我从这里得到的参考:http : //forums.codeblocks.org/index.php?topic=16748.0;prev_next=prev。看最后一篇文章)
问题是,当我转到链接器设置时,在项目构建选项中,那里没有可用的库。我必须下载吗
-static-libgcc
-static-libstdc++
Run Code Online (Sandbox Code Playgroud)
如帖子所述,并将它们放在一个目录中,以便 Code::Blocks 可以看到它们并将它们添加到链接器选项中?如果是,我应该把图书馆放在哪里?
通过执行用户Abu Taher博士的建议,我使用了一个名为EditThisCookie的插件从浏览器下载cookie。
导出的cookie为JSON格式,实际上是一个对象数组。
是否可以将此数组作为参数传递给puppeteer?我可以将对象数组传递给page.setCookies()函数吗?
我下载并安装了 miniconda。
首先,可执行文件的名称不是conda,而是_conda。
无论如何,我输入:
_conda create -n test python=3.8.3
Run Code Online (Sandbox Code Playgroud)
我继续并安装软件包。
然后我尝试用以下命令激活环境_conda activate test
我明白了:
CommandNotFoundError: Your shell has not been properly configured to use 'conda
activate'.
If using 'conda activate' from a batch script, change your
invocation to 'CALL conda.bat activate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
- bash
- cmd.exe
- fish
- tcsh
- xonsh
- zsh
- powershell
See 'conda init --help' for more information …Run Code Online (Sandbox Code Playgroud) 我正在学习 Three.js,在一个示例中,作者创建了一个画布元素,然后将渲染器绑定到该画布元素。
<canvas id="c">
</canvas>
const renderer = new THREE.WebGLRenderer({canvas});
Run Code Online (Sandbox Code Playgroud)
然后他获取画布元素并将其存储到一个变量中canvas = renderer.domElement;
canvas.width和 和有什么区别canvas.clientWidth?
有没有办法从 c++ 运行 linux 命令 ls,并在 c++ 中获取存储在一个数组中的所有输出?
谢谢
我试图将有关具有特定类名的所有元素的信息放入数组中。
问题是这是一个动态生成的HTML页面,只要向下滚动,该类名称的新元素就会出现。
幸运的是,我事先知道其中有多少个元素。
因此,我的假设解决方案是检查具有该特定类名的元素的数量,并且只要该数量小于我所知道的数量,就可以继续使用。
问题是我不知道如何准确地计算puppeteer中特定类名称的元素,而且API也不是很有用。
我的代码有错误,所以我尝试在错误代码中记录该值。所以我做了:
const read = await page.$$('.Ns6lhs9 _gfh3').length;
Run Code Online (Sandbox Code Playgroud)
然后我 console.log(read);
出于某种原因,undefined尽管'Ns6lhs9 _gfh3'HTML 中有带有类名的元素,但我得到了
我想将一个数组转换为一个文本文件,并用换行符分隔每个条目。
我发现了一个名为 array-to-txt-file 的 npm 包。这是网页: array-to-txt-file
这个包声称将用换行符连接数组的每个元素,以便数组的每个元素都出现在文本文件的自己的行上。
所以我试了一下,虽然效果很好,但它并没有用换行符连接元素。一个元素在哪里结束,另一个元素就在哪里开始。
所以我查看了包的源代码,这是创建这种效果的代码。
try {
array.forEach(v => {
if(_.isPlainObject(v)) {
ws.write(`${JSON.stringify(v)}\n`)
return
}
ws.write(`${v}\n`)
})
Run Code Online (Sandbox Code Playgroud)
特别是ws.write(${v}\n)部分。
然后我将我的输出文本文件导入到十六进制编辑器中。在十六进制编辑器中,每个元素之间都有一个点。现在,这个点与普通点不同。
常规点的十六进制值为2E,而出现在元素之间的点的十六进制值为0A。另请注意,我使用的是 Windows 7,当用记事本查看时,元素之间没有任何显示 - 一个结束,另一个直接开始。
那么有没有办法修改我上面发布的代码中的那一行,所以它真的在那个部分创建了一个换行符?
我希望数组根据条件具有两个不同的值。我可以用我想要的值初始化条件内的数组。
if (myCondition == 0)
{
byte my_message[8] = {0x00, 0xAB, 0xEE, 0xFF, 0x00, 0x01, 0x0A, 0x0B};
}
else if (myCondition == 1)
{
byte my_message[8] = {0x11, 0xA1, 0xBC, 0x71, 0x00, 0x02, 0x94, 0x10};
}
Run Code Online (Sandbox Code Playgroud)
先前方法的问题是数组具有本地范围,并且下面的代码无法“看到”它。
如果我尝试在条件之外声明数组:
byte my_message[8];
Run Code Online (Sandbox Code Playgroud)
然后,在条件内,我不能使用以前的方式一次性初始化整个数组。
数据中没有模式,因此我可以for在条件内使用循环,以便轻松地为数组的每个元素赋予值。
除了麻烦之外,还有一种给数组赋值的方法吗:
if (myCondition == 0)
{
my_message[0] = {0x00};
my_message[1] = {0xAB};
my_message[2] = {0xEE};
....
}
Run Code Online (Sandbox Code Playgroud) javascript ×5
node.js ×5
puppeteer ×4
arrays ×3
c++ ×3
async-await ×1
c ×1
canvas ×1
codeblocks ×1
conda ×1
cookies ×1
dom ×1
file ×1
hex ×1
if-statement ×1
json ×1
libgcc ×1
linker ×1
linux ×1
ls ×1
miniconda ×1
output ×1
python ×1
python-3.x ×1
three.js ×1