From dae4e68de1894cbf96abc242af694b8fbd2cc8dc Mon Sep 17 00:00:00 2001 From: ttturkey <757006179@qq.com> Date: Tue, 21 Apr 2020 18:38:56 +0800 Subject: [PATCH] Adapte scrollToSelector to xpath selector QuerySelector only works for CSS selector . As puppeteer support both CSS selector & xpath selector , add the piece of code can help scrollToSelector to use xpath selector . CSS selector does not support modern pseudo syntax which limit its use . Xpath can be used as a workaround . --- capture/engine_scripts/puppet/clickAndHoverHelper.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/capture/engine_scripts/puppet/clickAndHoverHelper.js b/capture/engine_scripts/puppet/clickAndHoverHelper.js index 81ff30e8f..495f282b8 100644 --- a/capture/engine_scripts/puppet/clickAndHoverHelper.js +++ b/capture/engine_scripts/puppet/clickAndHoverHelper.js @@ -31,9 +31,16 @@ module.exports = async (page, scenario) => { } if (scrollToSelector) { - await page.waitFor(scrollToSelector); + await page.waitFor(scrollToSelector); + if (scrollToSelector.startsWith('//')){ + await page.evaluate(scrollToSelector => { + document.evaluate(scrollToSelector, document, null, XPathResult.ANY_TYPE, null ).iterateNext().scrollIntoView(); + }, scrollToSelector); + }else{ + await page.evaluate(scrollToSelector => { document.querySelector(scrollToSelector).scrollIntoView(); }, scrollToSelector); } + } };