Chrome浏览器中VBA Selenium SendKeys Ctrl+C失效问题求助
解决Chrome下VBA Selenium的Ctrl+C复制失效问题
原代码问题分析
直接调用driver.SendKeys给浏览器窗口发按键时,ChromeDriver切换新窗口后,焦点可能未落在页面内容区域,导致Ctrl+C无法触发剪贴板复制;部分网站的剪贴板权限限制也会拦截这类模拟操作。
解决方案1:定位元素后再发送按键
先定位页面的body元素并设置焦点,再对该元素执行全选和复制操作,确保按键指令作用在正确的区域:
Private keys As New selenium.keys Private driver As New selenium.ChromeDriver Sub A_Scrap_Chrome() Dim myURL As String Dim keyObj As selenium.keys Dim bodyElem As selenium.WebElement Set keyObj = New selenium.keys Const JS_NEW_WINDOW = "window.open(arguments[0], name);" myURL = "https://en.wikipedia.org/wiki/Wikipedia:Random" driver.get myURL driver.ExecuteScript JS_NEW_WINDOW, myURL driver.SwitchToNextWindow '定位body元素并获取焦点 Set bodyElem = driver.FindElementByTag("body") bodyElem.Click bodyElem.SendKeys keyObj.Control & "A" bodyElem.SendKeys keyObj.Control & "C" End Sub
解决方案2:直接通过JS获取页面文本(更稳定)
如果你的需求是获取页面内容,完全可以跳过剪贴板操作,直接用JavaScript读取页面文本,避免权限和焦点问题:
'替换原代码中SendKeys的部分 Dim pageText As String pageText = driver.ExecuteScript("return document.body.innerText;") '示例:将文本写入Excel单元格 Range("A1").Value = pageText
内容的提问来源于stack exchange,提问作者Mukunda Adhikari
相关产品推荐
相关产品推荐

