【问题标题】:Can't find atag link with document.querySelector找不到带有 document.querySelector 的 atag 链接
【发布时间】:2019-09-28 16:03:02
【问题描述】:

我正在尝试查找包含: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;
}

【问题讨论】:

  • @charlietfl 我认为我正确使用了引号?

标签: javascript html queryselector atag


【解决方案1】:

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

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

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

【讨论】:

  • 这很漂亮。我现在明白你的意思了。这确实完美!非常感谢各位FZ的帮助!
【解决方案2】:

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

【讨论】:

  • 我知道可以使用 ng-click 属性来查找标签,但我的代码中还有其他一些问题:)
猜你喜欢
  • 1970-01-01
  • 2020-04-26
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 2021-03-13
  • 2021-05-16
相关资源
最近更新 更多