我正在使用一个驱动程序。通过。classname方法读取firefox浏览器上的元素,但我得到“不支持复合类名。请考虑搜索一个类名并过滤结果。”异常
这是我的代码
driver.FindElement(By.ClassName("bighead crb")).Text.Trim().ToString()
//and here is how the html of browser looks like
<form action="#" id="aspnetForm" onsubmit="return false;">
<section id="lx-home" style="margin-bottom:50px;">
<div class="bigbanner">
<div class="splash mc">
<div class="bighead crb">LEAD DELIVERY MADE EASY</div>
</div>
</div>
</section>
</form>
想通了这个问题,你必须通过搜索:
driver.FindElement(By.ClassName("bighead")).Text.Trim().ToString(); //instead of
driver.FindElement(By.ClassName("bighead crb")).Text.Trim().ToString();
html类中的任何空格都表示一个新的类名,所以只需按第一个单词搜索即可。
不,就你的问题而言,你自己的答案并不是最好的。
假设您有这样的HTML:
<div class="bighead ght">LEAD DELIVERY MADE HARD</div>
<div class="bighead crb">LEAD DELIVERY MADE EASY</div>
driver.FindElement(By.ClassName(“bighead”)
将找到两者并返回第一个div
,而不是您想要的。您真正想要的是<code>driver.FindElement(By.ClassName(“bighead crb”),但正如您在问题中所说,这不起作用,因为您需要另一种通过复合类名查找元素的方法。
这就是为什么大多数人使用更强大的“选择器”
或“By.XPath”
的原因。然后你有:
选择器(最佳):
driver.FindElement(By.CssSelector(".bighead.crb")); // flexible, match "bighead small crb", "bighead crb", "crb bighead", etc.
driver.FindElement(By.CssSelector("[class*='bighead crb']")); // order matters, match class contains "bighead crb"
driver.FindElement(By.CssSelector("[class='bighead crb']")); // match "bighead crb" strictly
XPath(更好):
driver.FindElement(By.XPath(".//*[contains(@class, 'bighead') and contains(@class, 'crb')]")); // flexible, match "bighead small crb", "bighead crb", "crb bighead", etc.
driver.FindElement(By.XPath(".//*[contains(@class, 'bighead crb')]")); // order matters, match class contains string "bighead crb" only
driver.FindElement(By.XPath(".//*[@class='bighead crb']")); // match class with string "bighead crb" strictly
问题内容: 我正在使用driver.findelement by.classname方法在firefox浏览器上读取元素,但是我收到“不支持复合类名。请考虑搜索一个类名并过滤结果。” 例外 这是我的代码 问题答案: 不,就您的问题而言,您自己的答案并不是最好的答案。 假设您有这样的HTML: 会找到两个,然后返回您的第一个,而不是您想要的一个。您真正想要的是,但是就像您在问题中说的那样,这将不起作
我有一个方法来计算< code > div 中元素的数量并返回它们的数目。 这是页面源代码 WebDriver引发以下错误:不支持复合类名。考虑搜索一个类名并过滤结果,或者使用CSS选择器。 编辑: 结果是< code>WerbDriver不支持类名中的空格,omg。 你们能帮我在这种情况下使用< code>CSS选择器来找到元素吗?
我正在尝试使用以下模式: 这对我来说似乎很简单,但是我收到以下错误: 索引签名参数类型不能是联合类型。请考虑改用映射的对象类型。 我做错了什么?
我试图得到以下每个元素使用 inspect元素的输出如下。 但是它失败了,并抛出下面的错误。 另外,我如何遍历每个类?每个类都包含子部分,我想在进入下一个类之前进一步单独处理这些子部分。
Navicat 提供筛选功能,让你在连接窗格、对象列表窗格、模型设计器和其他树状结构搜索对象。 在连接窗格或其他树状结构,点击该窗格或树来聚焦并直接筛选字符串。如果连接窗格中的连接已打开,筛选也会同时应用到连接中的数据库对象。 在对象列表窗格,点击 Navicat 主窗口的 ,并在搜索框里输入筛选字符串。在模型设计窗口,简单地在搜索框里输入筛选字符串。 你可以移除筛选,只需删除筛选字符串。
“对象筛选”能让你在 Navicat Cloud 筛选模型,在视图设计器中筛选树状结构、以及在画布中筛选包含筛选字符串的表、实体或视图。 只需在“搜索”文本框中指定一个筛选字符串。若要移除筛选,只需删除筛选字符串。