【发布时间】:2020-06-12 20:31:36
【问题描述】:
我有一个不工作的特定 xpath。我正在等待 XPath 出现,但由于某种原因我仍然无法得到它。
这里是 xpath:
我正在使用:'//*[@id="settings"]/div[6]/div[2]/div[2]/div/div[3]/div/form/div[4]/div/div[2]/button[contains(text(), "Save")]'
为了确认此 xpath 在页面中,我转到控制台并对其进行评估。
$x('//*[@id="settings"]/div[6]/div[2]/div[2]/div/div[3]/div/form/div[4]/div/div[2]/button[contains(text(), "Save")]')
然后我明白了:
[button.ml3-sm.mb1-sm.css-17hmqcn.ex41m6f0.primary]
0: button.ml3-sm.mb1-sm.css-17hmqcn.ex41m6f0.primary
我的代码如下:
await page.waitForXPath('//*[@id="settings"]/div[6]/div[2]/div[2]/div/div[3]/div/form/div[4]/div/div[2]/button[contains(text(), "Save")]');
const [setting] = await page.$x('//*[@id="settings"]/div[6]/div[2]/div[2]/div/div[3]/div/form/div[4]/div/div[2]/button[contains(text(), "Save")]');
if(setting) setting.click();
我等待元素。我可以在页面上直观地看到它,并且就像我上面提到的那样,我可以评估它,但点击永远不会触发。
我也试过这个:
setting[0].click().
知道我错过了什么吗?
【问题讨论】:
-
当您有文本输出时,don't take a picture but copy paste the output in your POST 也可以从浏览器控制台中复制 html:从检查器中,右键单击 -> 复制为 outerHTML。
-
固定@GillesQuenot
-
如果您尝试与之交互的是公共网页,您可以分享它的网址吗?我只是看到您在使用这个特定元素时遇到了困难。我确信那里有解决方案;)
标签: puppeteer