我有一个聊天应用程序,其状态由此行代表:
<span id='status'>Offline</span>
我希望Puppeteer每次在此范围内的文本发生变化时都会记录。
首先说,状态是&#34;离线&#34;,然后它被更改为&#34;在线&#34;,然后过了一段时间到&#34;离开&#34;等等。我希望Puppeteer捕捉那些时刻和状态(离线&gt;在线&gt;离开)
我设法做的是:
const page = await browser.newPage();
await page.goto('https://chat.com');
const statusHandle = await page.$('span#status');
let statusText = await page.evaluate(() => document.querySelector('#status').innerText);
let iniVal = {statusHandle,statusText };
此时我有statusHandle
和初始状态。
await page.waitForFunction(
(iniVal) => iniVal.statusHandle.innerHTML !== iniVal.statusText,
{ timeout: 0 },
iniVal
)
并将其置于循环中。这就是我挣扎的重点。
首先它给出了一个类型错误&#34; TypeError:将循环结构转换为JSON&#34;,这是由于传递的键值对不是原语,但即使我过度简化而只是做(按照{{ 3}}):
await page.waitForFunction(
'document.querySelector("span#status").innerText === "Online"'
)
它没有产生任何结果。
总结:我期待
让Puppeteer评估document.querySelector('#status').innerText !== statusText
返回新状态值
让流程循环运行
答案 0 :(得分:1)
我只需使用回调设置递归函数:
keras_contrib
# Initialize vocab_size & embedding_weights
# Initialize C, U, N, M, H
model = Sequential()
embedding_layer = Embedding(vocab_size, N,
weights=[embedding_weights], mask_zero=True,
embeddings_regularizer=regularizers.l2(0.0001))
model.add(TimeDistributed(embedding_layer,
input_shape=(C, U)))
model.add(TimeDistributed(Bidirectional(LSTM(M // 2, return_sequences=True,
kernel_regularizer=regularizers.l2(0.0001)))))
model.add(TimeDistributed(Dropout(0.2)))
model.add(TimeDistributed(GlobalMaxPooling1D()))
model.add(Bidirectional(LSTM(H // 2, return_sequences = True,
kernel_regularizer=regularizers.l2(0.0001))))
model.add(Dropout(0.2))
crf = CRF(num_tags, sparse_target=False, kernel_regularizer=regularizers.l2(0.0001))
model.add(crf)
model.compile(optimizer, loss = crf.loss_function, metrics=[crf.accuracy])