page.waitFor()
您也可以简单地使用page.waitFor() 传递一个函数或等待等待的 CSS 选择器。
等待函数
如果元素是input 字段,我们可以在检查value 是否存在之前检查.count 元素是否存在以避免潜在错误:
await page.waitFor(() => {
const count = document.querySelector('.count');
return count && count.value.length;
});
如果元素不是input 字段,我们可以在检查innerText 是否存在之前检查.count 元素是否存在以避免潜在错误:
await page.waitFor(() => {
const count = document.querySelector('.count');
return count && count.innerText.length;
});
等待 CSS 选择器
如果元素是包含placeholder的input字段,并且您想检查value当前是否存在,则可以使用:not(:placeholder-shown):
await page.waitFor('.count:not(:placeholder-shown)');
如果元素是一个不包含placeholder的input字段,并且您想检查value属性是否包含字符串,您可以使用:not([value=""]):
await page.waitFor('.count:not([value=""])');
如果元素不是没有任何子元素节点的input字段,我们可以使用:not(:empty)等待元素包含文本:
await page.waitFor('.count:not(:empty)');
page.waitForXPath()
等待 XPath
否则,您可以使用 page.waitForXPath() 等待 XPath 表达式在页面上定位元素。
即使元素上存在除count 之外的其他类,以下 XPath 表达式也将起作用。换句话说,它将像.count 一样工作,而不是[class="count"]。
如果元素是input字段,可以使用下面的表达式等待value属性包含字符串:
await page.waitForXPath('//*[contains(concat(" ", normalize-space(@class), " "), " test ") and string-length(@value) > 0]')
如果元素不是 input 字段,则可以使用以下表达式等待元素包含文本:
await page.waitForXPath('//*[contains(concat(" ", normalize-space(@class), " "), " count ") and string-length(text()) > 0]');