【问题标题】:selenium - Injecting / altering html before rendering in browserselenium - 在浏览器中渲染之前注入/更改 html
【发布时间】:2021-09-15 18:34:20
【问题描述】:

有没有办法在使用 selenium 在浏览器中渲染之前编辑 HTML 标签,比如当我使用 driver.Navigate().GoToUrl("www.xyz.com) 而不是加载原始 HTML 时,我想更改一些 href 标签?

【问题讨论】:

  • 粘贴您的整个代码,以便我们了解您卡在哪里
  • 我没有任何代码来演示它。我只想在使用 selenium 时在浏览器中渲染之前编辑 HTML。
  • 不知道为什么你在这个问题上得到了减号,这是一个有效的恕我直言。我在 Python 中遇到了这个问题,我找到了一种可以帮助您的方法:使用简单的 HTTP 请求方法获取网页内容,修改元素,将修改后的内容传递给 selenium - 请参阅此 SO 答案以供参考:@ 987654321@

标签: c# selenium selenium-chromedriver


【解决方案1】:

要编辑任何网页,您需要先在浏览器上加载 html 页面。分享一个示例补丁供参考:

element =driver.find_element_by_id("some-random-number")
#alter innertext value to 200
driver.execute_script("arguments[0].innerText = '200'", element)

如果不在浏览器上呈现源代码,您将无法找到要更改的元素。
希望它能解释你的查询。

【讨论】:

  • 但我希望在渲染之前对其进行编辑!所以我可以更改图像标签和几个 href 标签!
  • 您如何期望 selenium 识别网页中图像和 href 标记的 xpath/css 定位器元素而不在浏览器中呈现它?
  • >> 如果不在浏览器上呈现源代码,您将无法找到要更改的元素。 - 取决于您如何定义渲染,但是:当然可以:只需请求纯 HTML,解析它以获得可寻址的 DOM,动态更改元素,将 DOM 传递给完成工作并创建最终页面的渲染器 -不得不承认:在这种情况下,“渲染”并不是最好的术语
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
相关资源
最近更新 更多