找不到带有 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.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;;;";
【讨论】:
这很漂亮。我现在明白你的意思了。这确实完美!非常感谢各位FZ的帮助!【参考方案2】:这可能是因为 ng-click 不是适当的 html 属性,尝试通过 id 或 class 找到它:)
【讨论】:
我知道可以使用 ng-click 属性来查找标签,但我的代码中还有其他一些问题:)以上是关于找不到带有 document.querySelector 的 atag 链接的主要内容,如果未能解决你的问题,请参考以下文章
带有消息“找不到驱动程序”的 PostgreSql 'PDOException'
找不到带有 document.querySelector 的 atag 链接
使用带有 DataDriver 库的 Robot Framework 时找不到变量“$username”
Angular:找不到带有路径的控件:'variable-> 0 -> id'
可编辑表单 ActiveRecord::RecordNotFound(找不到带有 'id'=undefined 的视频)