gpt4 book ai didi

selenium - 无法使用 css 选择器找到元素

转载 作者:行者123 更新时间:2023-12-02 05:05:17 24 4
gpt4 key购买 nike

使用 C# (.Net) 将 Selenium Webdriver 用于 FF/IE

下面是我的页面源代码,我正在尝试使用 CssSelector 从我的页面中查找/包含特定名称,我尝试使用以下代码但导致错误,有什么帮助吗?

//代码

driver.FindElement(By.CssSelector("td:contains('John John')"))

//错误:

e {"Unable to find element with css selector == td:contains('John John')"}  System.Exception {OpenQA.Selenium.NoSuchElementException}

//我的html代码:

 <div id="ctl00_ContentPlaceHolder1_AddeCardControl1_gv_ctl01_RecordCount" style="float:right; padding-right:10px; margin-top:3px;">
<b>308</b> Items Found
</div>
</td>
</tr>
<tr class="item">
<td align="center"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$gv','Select$0')">Edit</a></td>
<td align="center" style="width:15px;"></td>
<td>John John</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="check.png" alt='Active' style='display: ;' /></td>
<td>9/7/2012 11:15:08 PM</td>
</tr>
<tr class="altItem">
<td align="center"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$gv','Select$1')">Edit</a></td>
<td align="center" style="width:15px;"></td>
<td>John Schulz</td>
<td>&nbsp;</td>
<td>Visitors</td>
<td>&nbsp;</td>
<td><img src="check.png" alt='Active' style='display: ;' /></td>
<td>9/7/2012 6:28:29 PM</td>
</tr>
<tr class="item">
<td align="center"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$gv','Select$2')">Edit</a></td>
<td align="center" style="width:15px;"></td>
<td>Parker Smith</td>
<td>&nbsp;</td>
<td>Visitors</td>
<td>&nbsp;</td>
<td><img src="check.png" alt='Active' style='display: ;' /></td>
<td>9/7/2012 6:01:28 PM</td>
</tr>
<tr class="altItem">
<td align="center"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$gv','Select$3')">Edit</a></td>
<td align="center" style="width:15px;"></td>
<td>Test 123</td>
<td>&nbsp;</td>
<td>Visitors</td>
<td>&nbsp;</td>
<td><img src="check.png" alt='Active' style='display: ;' /></td>
<td>9/7/2012 1:36:45 PM</td>
</tr>
<tr class="item">
<td align="center"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$gv','Select$4')">Edit</a></td>
<td align="center" style="width:15px;">

最佳答案

:contains 伪选择器不是 W3C CSS 选择器标准的一部分。因此,浏览器不支持使用它来选择元素。某些 JavaScript CSS 选择器引擎(例如,jQuery 使用的 Sizzle 引擎)提供了一个 :contains 伪选择器,但不能依赖它的存在。

如果您必须通过元素的文本内容来查找元素,此时您唯一的解决方案是使用 XPath。如何在您的案例中找到它的(性能非常差的)示例如下:

IWebElement element = driver.FindElement(By.XPath("//td[contains(., 'John John')"));

请注意,更好的解决方案始终是让您正在自动化的应用程序拥有适合您需要查找的元素的 ID。您应该仅在万不得已时才使用文本来查找元素。

关于selenium - 无法使用 css 选择器找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com