gpt4 book ai didi

c# - 不支持复合类名。考虑搜索一个类名并过滤结果

转载 作者:太空狗 更新时间:2023-10-29 20:45:58 25 4
gpt4 key购买 nike

我正在使用 driver.findelement by.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>

最佳答案

不,就您的问题而言,您自己的答案并不是最好的。

假设您有这样的 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,而不是您想要的那个。你真正想要的是 driver.FindElement(By.ClassName("bighead crb")),但就像你在问题中所说的那样,这行不通,因为你需要另一种方法来查找元素通过复合类名。

这就是为什么大多数人使用更强大的 By.CssSelectorBy.XPath 的原因。那么你有:

CssSelector(最好的):

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

关于c# - 不支持复合类名。考虑搜索一个类名并过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361643/

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