找不到带有 document.querySelector 的 atag 链接

Posted

技术标签:

【中文标题】找不到带有 document.querySelector 的 atag 链接【英文标题】:Can't find atag link with document.querySelector 【发布时间】: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 我认为我正确使用了引号? 【参考方案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 属性来查找标签,但我的代码中还有其他一些问题:)

以上是关于找不到带有 document.querySelector 的 atag 链接的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 Form“找不到带有路径的控件”

带有消息“找不到驱动程序”的 PostgreSql 'PDOException'

找不到带有 document.querySelector 的 atag 链接

使用带有 DataDriver 库的 Robot Framework 时找不到变量“$username”

Angular:找不到带有路径的控件:'variable-> 0 -> id'

可编辑表单 ActiveRecord::RecordNotFound(找不到带有 'id'=undefined 的视频)