You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium自动化LinkedIn分享时遇WebDriverException错误求助

解决LinkedIn使用Selenium执行JS时的Content Security Policy错误

嘿,这个问题我之前也碰到过,是LinkedIn的Content Security Policy (CSP) 限制在搞事情!它的CSP规则里没允许unsafe-eval,而你原来用字符串形式传入JS代码的方式,会被浏览器判定为eval类的执行操作,直接触发了这个限制,所以才抛出了那个错误。

给你几个实用的解决办法:

1. 直接操作WebElement,避免字符串形式的JS查找

不要在JS代码里写元素查找逻辑,而是先通过Selenium找到目标元素,再把它作为参数传给executeScript,直接操作这个元素。修改后的代码如下:

WebElement ele = driver.findElement(By.cssSelector(".sharing-create-share-view__create-content>button"));
ele.click();
String content = shareContent[new Random().nextInt(shareContent.length)];

// 先通过Selenium定位到编辑框元素
WebElement editorEle = driver.findElement(By.cssSelector(".mentions-texteditor__contenteditable"));

// 将元素和内容作为参数传入JS,直接操作
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].innerHTML = '<p>' + arguments[1] + '<br></p>';", editorEle, content);

MyWebDriverUtils.mySleep(1, 1);
driver.findElement(By.cssSelector(".sharing-share-box__post-button")).click();

2. 为什么这个方法有效?

当你把WebElement作为arguments传给executeScript时,Selenium会直接引用DOM中已定位的元素,不需要在JS代码里执行字符串形式的查找逻辑,这种方式完全不会触发CSP的unsafe-eval限制,同时还避免了字符串拼接可能带来的转义错误(比如内容里有引号的情况)。

3. 额外的优化建议

  • 尽量升级你的Selenium版本到3.141.59或更高,你当前用的3.4.0版本太老旧了,存在不少兼容性问题
  • 考虑放弃PhantomJS,它已经停止维护了,对现代网站的CSP和JS特性支持很差,换成ChromeDriver或者FirefoxDriver会稳定很多
  • 避免用字符串拼接生成JS代码,这种写法不仅容易触发安全限制,还可能引入难以排查的语法错误

内容的提问来源于stack exchange,提问作者何子洋

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:24:38