首页 > 解决方案 > Selenium C# - 如何从锚标记中删除或替换 target=_blank

问题描述

我有以下 html 代码片段:

<p>
  <a href="https://www.google.com" target="_blank" onclick="s_objectID="https://www.google.com/_1";return
    <span class>"ms-rteStyle-external-link-small">
       "Production Efficiency Status"
       ::after
    </span>
   </a>
</p>

单击链接时,它将在新选项卡上打开。我想删除 target="_blank" 或将其替换为 target="_self" 以便链接在同一个选项卡上打开。

使用 Selenium (ChromeDriver)、C# 和 JavaScript,我做了以下事情:

IJavaScriptExecutor jsX = (IJavaScriptExecutor)Driver.driver;

var elm = Driver.driver.FindElement(By.CssSelector("#WebPartWPQ5 > div.ms-rtestate-field > div > div > p:nth-child(3) > a > span"));

// jsX.ExecuteScript("arguments[0].setAttribute(\"target\", \"_self\")", elm);
jsX.ExecuteScript("arguments[0].removeAttribute(\"target\")", elm);

elm.Click();

上面的代码仍然在新选项卡上打开链接。请指出我需要做的更正,以便在同一个选项卡上打开单击的链接。

我使用了以下参考资料:

  1. https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute
  2. https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute
  3. Selenium - 将“WebElement”转换为 Javascript 或 JQuery 对象的通用方法

标签: javascriptc#seleniumdomselenium-webdriver

解决方案


以下代码将从<a>标签中删除“目标”属性:

driver.ExecuteScript("document.getElementsByTagName('a').removeAttribute('target')");

推荐阅读