2

我正在尝试查找包含以下内容的链接:ng-click="showModal()"并且具有 innerText: 1122334455

我尝试使用以下代码,但找不到链接(atag)。我不确定使用的代码行中可能存在什么问题:document.querySelector?(那条线是问题所在)

atag 所在位置的 HTML 代码如下所示:

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

C#/javascript 代码找到上面的 atag

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;
}
4

2 回答 2

2

您不能将 JS 代码放在document.querySelector的查询字符串中。

您必须在选择后执行此操作。为此,请改用document.querySelectorAllandfor循环:

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;};};";
于 2019-09-28T16:29:27.670 回答
-1

这可能是因为 ng-click 不是适当的 html 属性,请尝试通过 id 或 class 找到它:)

于 2019-09-28T16:11:19.343 回答