Не удается найти ссылку на тег с document.querySelector - PullRequest
2 голосов
/ 28 сентября 2019

Я пытаюсь найти ссылку, которая содержит: ng-click="showModal()" и имеет innerText: 1122334455

Я пытался использовать приведенный ниже код, но он не находит ссылку (atag).Я не уверен, в чем может быть проблема в кодовой строке, которая использует: document.querySelector?(Эта строка является проблемой)

HTML-код для определения местоположения тега atag и выглядит следующим образом:

<td class="col-reservation-id text-center">
  <span class="overflow-text">
    <a class="highlight" ng-click="showModal()">1122334455</a>
  </span>
</td>

C # / код javascript для поискавыше атаг

public async Task<bool> clicklink(ChromiumWebBrowser browser)
{
    String atag = "document.querySelector('" + "a[ng-click=" + '"' + "showModal()" + '"' + "].innerText === '1122334455'" + "')";

    String clickinputscript = atag + ".focus(); " +
                              atag + ".click(); ";

    bool success = false;
    try
    {
        success = (await browser.GetMainFrame().EvaluateScriptAsync(clickinputscript)).Success;
    }
    catch (Exception ex) { success = false; }
    return success;
}

Ответы [ 2 ]

2 голосов
/ 28 сентября 2019

Нельзя поместить код JS в строку запроса document.querySelector.

Это необходимо сделать после выбора.Чтобы сделать это, используйте document.querySelectorAll и цикл for вместо:

for(const element of document.querySelectorAll('a[ng-click="showModal()"]').values()){
  if(element.innerText === '1122334455'){
    element.focus()
    element.click()
    break
  }
};

Или, преобразованный в C # -land:

String clickinputscript = "for(const element of document.querySelectorAll('a[ng-click=" + '"showModal()"'+"]').values()){if(element.innerText === '1122334455'){element.focus();element.click();break;};};";
0 голосов
/ 28 сентября 2019

Вероятно, потому что ng-click не является атрибутом propper html, попробуйте найти его по id или классу:)

...