Selenium C # - Как удалить или заменить target = _blank из тега привязки - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующий фрагмент 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

1 Ответ

0 голосов
/ 08 февраля 2019

Следующий код удалит атрибут target из тегов <a>:

driver.ExecuteScript("document.getElementsByTagName('a').removeAttribute('target')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...