能否通过AppleScript让Chrome跨URL执行XPath元素点击?
操作可行性分析
直接给出结论:你提供的操作完全不可行,具体原因如下:
Chrome的
execute javascript命令有上下文限制
Chrome的AppleScript接口中,execute javascript仅能作用于当前激活标签页的DOM上下文。你示例里先加载了stackoverflow的提问页面,此时执行的JS只能操作该页面的元素,根本无法触及其他标签页(包括扩展页面)的DOM。XPath写法完全错误
你把扩展URL直接拼进XPath是完全误解了XPath的作用——XPath是用来定位当前页面内DOM元素的路径,不是用来指定目标页面URL的。这种写法根本找不到任何元素,只会返回null,调用click()时直接报错。扩展页面的隔离机制
就算切换到扩展页面标签页,Chrome对扩展页面有严格的上下文隔离和权限限制,外部通过AppleScript注入的JS不一定能正常操作扩展页面的元素(部分扩展会通过Content Security Policy限制外部脚本执行)。
正确的操作思路(若需实现点击扩展页面元素)
如果确实要操作扩展页面的元素,正确步骤如下:
- 先让Chrome加载目标扩展URL的标签页并激活它
- 再在该激活标签页的上下文里执行正确的XPath定位JS
修正后的AppleScript示例代码:
tell application "Google Chrome" -- 加载扩展页面并激活标签页 set extensionTab to open location "chrome-extension://bkdgflcldnnnapblkhphbgpggdiikppg/dashboard/html/browser.html" set active tab of window 1 to extensionTab -- 执行正确的JS代码(添加可选链避免元素不存在时报错) execute javascript "document.evaluate('/html/body/div/section/div/div/div[2]/div/div/button', document.body, null, 9, null).singleNodeValue?.click();" end tell
内容的提问来源于stack exchange,提问作者d-b
相关产品推荐
相关产品推荐

