小编Gra*_*ler的帖子

(Chrome DevTools) 即使元素明显存在于页面上,querySelector 返回 null

我正在尝试使用 CasperJS 抓取网站,但该casper.waitForSelector()函数总是超时,这意味着它永远找不到我需要的给定元素。

然后我在 Google Chrome 中执行了以下步骤:

  1. 打开网页和 Chrome DevTools 控制台。
  2. 等待该元素在页面上对我的眼睛可见。
  3. 在控制台中输入:document.querySelector(".dropdown-menu")
  4. Chrome 给出null元素不存在)。

但是,当我切换到元素 (DevTools),然后在检查元素模式(或其子元素之一)中单击所需的元素时,Chrome 会使用相同的document.querySelector(".dropdown-menu")命令在控制台中返回该元素。

我怀疑该页面包含无效的 HTML 代码(未封闭的标签)。

当我在“检查元素模式”下单击该元素时,Chrome 会修复 HTML DOM,这意味着 JavaScript 现在会按预期返回该元素。

如果这是真的,我可以在CasperJS中做些什么来触发相同的 DOM 修复事件吗?

如果这不是真的,那可能是什么?

javascript google-chrome phantomjs casperjs

5
推荐指数
1
解决办法
1803
查看次数

气流在单个DAG中生成动态任务,任务N + 1取决于TaskN

动态生成任务时,我需要让Task 2依赖于Task 1,Task1 >> Task 2或task2.set_upstream(task1)。

由于task_ids已评估,或者似乎是预先确定的,因此我无法提前设置依赖关系,将不胜感激。

Component(I)任务可以很好地运行,只不过它们一次运行即可。

for i in range(1,10):
  task_id='Component'+str(i)
  task_id = BashOperator(
  task_id='Component'+str(i),
  bash_command="echo  {{ ti.xcom_pull task_ids='SomeOtherTaskXcom', key='return_value') }} -z " + str(i) ,
  xcom_push=True,
  dag=dag) 
  ?????.set_upstream(??????)
Run Code Online (Sandbox Code Playgroud)

python airflow

4
推荐指数
2
解决办法
1256
查看次数

如何使用 Puppeteer 执行右键单击?

我正在尝试使用 Puppeteer 执行右键单击。

我试图添加选项:

await component.click({ button: "right" })
Run Code Online (Sandbox Code Playgroud)

但我得到的只是对组件的常规点击。我遵循了 Puppeteer 的API

我究竟做错了什么?

javascript node.js headless-browser google-chrome-devtools puppeteer

4
推荐指数
1
解决办法
6881
查看次数

木偶:如何获取节点列表中每个元素的内容?

我正在尝试实现一些非常琐碎的事情:获取元素列表,然后innerText对每个元素的元素进行操作。

const tweets = await page.$$('.tweet');
Run Code Online (Sandbox Code Playgroud)

据我所知,这将返回一个节点列表,就像document.querySelectorAll()浏览器中的方法一样。

我如何遍历它并得到我所需要的?我尝试了各种东西,例如:

[...tweets].forEach(tweet => {
  console.log(tweet.innerText)
});
Run Code Online (Sandbox Code Playgroud)

javascript node.js headless-browser google-chrome-devtools puppeteer

4
推荐指数
2
解决办法
4731
查看次数

捕获 waitForSelector 错误

我使用一个名为Puppeteer的模块

我尝试在我的页面上等待一个可能不会出现的选择器。在我采用的两种方法中,只有 try-catch 方法有效。

try-catch 块 - 工作

try {
    await page.waitForSelector('.element');
    //element appeared
} catch (error) {
    //element did not appear
}
Run Code Online (Sandbox Code Playgroud)

承诺链 - 不工作

await page.waitForSelector('.element')
    .catch((error) => { 
        //element did not appear
    })
    .then(() => {
        //element appeared
    });
Run Code Online (Sandbox Code Playgroud)

看起来 waitForSelector确实返回了 API 中指示的 Promise,但我不明白为什么后一种方法不起作用。无论如何它抛出了错误。

有没有人遇到过同样的问题?

javascript automation ui-automation node.js puppeteer

4
推荐指数
1
解决办法
1817
查看次数

将带有底图的tmap保存为图像?

我已经使用tmap和底图在R中创建了一个地图,并希望将其另存为图像。

每当我使用tmap_save将其另存为.png时,都会丢失底图。

大概是因为底图在绘图模式下不可见,而仅在视图模式下可见。

是否有一种很好的方法将带有底图的地图另存为图像?

我有一个解决方法,涉及先将其保存为HTML,但这不是一个很好的解决方案。

r tmap

3
推荐指数
2
解决办法
683
查看次数

我可以在 Puppeteer 的 page.type 上使用 XPath 表达式而不是 CSS 选择器吗?

现在的代码:

await page.type('#filterdataTable > div.widget > input', "1234");
Run Code Online (Sandbox Code Playgroud)

我可以使用 XPath 代替这个 CSS 选择器吗?

javascript xpath css-selectors node.js puppeteer

3
推荐指数
1
解决办法
4353
查看次数

Flutter 中的表格对齐?

我将在我的应用程序中使用数据表。

在我的页面中,我有一个背景,这个数据表应该在一个特定的位置(可能是中心),但我不知道如何为那个(数据表)设置对齐方式。

谁能告诉我如何解决这个问题?

flutter

3
推荐指数
3
解决办法
8770
查看次数

应用发布 APK 上的依赖项冲突,但不能调试?

我几天来一直在修改我的代码,但我无法让 Gradle 为我组装一个签名的 APK(按照错误代码说明将导致构建成功,但我的 Google 日历 API 失败)。

dependencies {
// commented stuff is no longer used or commented for some other reason.
//compile 'com.android.support:appcompat-v7:27.1.0'

implementation 'com.android.support:support-vector-drawable:28.0.0'

implementation 'com.google.android.gms:play-services-ads:15.0.1'
//    Dont know whats up with these errors above. ^
//    they seem to work even though they are "incompatible"
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.code.findbugs:jsr305:3.0.1'
implementation('com.google.api-client:google-api-client-android:1.23.0') {
    exclude module: 'guava-jdk5'
    //exclude group: 'org.apache.httpcomponents'
}
implementation 'com.android.support:multidex:1.0.3'
//implementation 'com.google.android.gms:play-services:12.0.1'
implementation …
Run Code Online (Sandbox Code Playgroud)

java android android-studio build.gradle android-gradle-plugin

3
推荐指数
1
解决办法
1121
查看次数

如何使用 Puppeteer 选中复选框?

我已经使用了这样的代码:

await page.$$eval( 'input[name=name_check]', checks => checks.forEach(c => c.checked = true)
Run Code Online (Sandbox Code Playgroud)

但这是针对多个复选框的。我想将它用于单个复选框。

如何只选中一个复选框?

javascript jquery node.js google-chrome-devtools puppeteer

3
推荐指数
1
解决办法
2783
查看次数