Firefox Selenium WebDriver存在By.cssSelector问题

Firefox Selenium WebDriver存在By.cssSelector问题,firefox,selenium,css-selectors,webdriver,Firefox,Selenium,Css Selectors,Webdriver,我有一个元素,其html类似于: <div class="gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text">Announcements</div> 但它无法评估CSS选择器 就连我也试过: By.cssSelector("gwt-Label.textNoStyle.textNoWrap.titlePanelGrayDiagonal-Text") 也尝试过这个: By.cssSelector("

我有一个元素,其html类似于:

<div class="gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text">Announcements</div> 
但它无法评估CSS选择器

就连我也试过:

By.cssSelector("gwt-Label.textNoStyle.textNoWrap.titlePanelGrayDiagonal-Text")
也尝试过这个:

By.cssSelector("div.textNoWrap.titlePanelGrayDiagonal-Text")
注意:titlePanelGrayDiagonal文本类在整个页面中仅由该元素使用。所以它是独一无二的。 包含我无法使用的伪选择器。 我只想识别css类

版本:Selenium 2.9 WebDriver
Firefox 5.0

我没有使用css选择器,但这是我将使用的xpath选择器:

"xpath=//div[@class='gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text']"
css选择器应该是这样的

"css=div[class='gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal-Text']"

来源:

通过阅读您的文章,您应该做什么,因为该类是唯一的,只需执行
FindElement(By.ClassName(“titlePanelGrayDiagonalText”)


此外,CssSelector不处理
包含的
关键字。w3曾讨论过但从未添加过该关键字。

您是否尝试过以下代码


By.cssSelector(“div#gwt Label.textNoStyle.textNoWrap.titlePanelGrayDiagonalText”)

使用Webdriver时,您希望使用W3C标准css选择器,而不是像您在jquery中使用的那样使用sizzle选择器。在您的示例中,您希望使用:

driver.findElement(By.cssSelector("div[class='titlePanelGrayDiagonal-Text']"));

我相信在CSS中使用通配符会更有帮助。如下
driver.findelelement(由.cssSelector(“div[class$='titlePanelGrayDiagonal-Text']);


这将查看class属性并查看该属性以什么结尾。因为您的class属性以“titlePanelGrayDiagonalText”结尾字符串,在css语句中添加的“$”将找到该元素,然后您可以执行您试图执行的任何操作。

什么是sudo选择器?您确定加载了正确的HTML吗?sudo选择器与css选择器一起使用,以唯一地标识。例如,如果存在两个元素,如:Announcements1和Announcements2然后你可以像这样对它们进行ID验证:。titlePanelGrayDiagonal文本:包含('Announcements1')和。titlePanelGrayDiagonal文本:包含('Announcements2')与它们的内部文本唯一。很抱歉,这是一个拼写错误,我编辑了这个问题。它的伪选择器。css=div[class='gwt-Label textNoStyle textNoWrap TITLELPANELGRAYANALOGRAY Text']不正确。它应该与“.”一起使用,如gwt-Label.textNoStyle.textNoWrap.titlePanelGrayDiagonal-Text。请参考此处的css选择器:好的,这只是基于css选择器的Selenium文档的猜测。但是您是否尝试过使用xpath选择器?Zoltan提到的这个css选择器是正确的。您不一定需要一直使用“.”。它只是一个快捷方式-div[class='gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal Text']你试过了吗?@Swagatika语法是正确的。你还应该看看为什么(By.cssSelector(“.titlePanelGrayDiagonal Text”))不起作用?cssSelector查找元素的每个类。因此,如果元素有三个类,则必须指定所有三个类,如下所示:By.cssSelector(“div[class='gwt-Label textNoStyle textNoWrap titlePanelGrayDiagonal Text'])ohh好的。感谢您的澄清:)@CBRacer我假设,如果上述示例类名不止一次出现,则选择html元素的第一次出现并作为WebElement对象返回。这是否正确?
driver.findElement(By.cssSelector("div[class='titlePanelGrayDiagonal-Text']"));