Java 用于在SeleniumWebDriver中选择表中特定行和列的css选择器

Java 用于在SeleniumWebDriver中选择表中特定行和列的css选择器,java,css,selenium,selenium-webdriver,Java,Css,Selenium,Selenium Webdriver,当我试图找到 css=table#Salarytable.dataTable.3.4 在selenium ide中,单元格将正确高亮显示。但是当我在selenium代码中使用此定位器时 String salary=driver.findElement(By.cssSelector("table#Salarytable.dataTable.3.4")).getText(); 由于存在非法字符串,这给了我一个错误。 编辑: html代码如下所示: <table id="Salarytab

当我试图找到

css=table#Salarytable.dataTable.3.4 
在selenium ide中,单元格将正确高亮显示。但是当我在selenium代码中使用此定位器时

String salary=driver.findElement(By.cssSelector("table#Salarytable.dataTable.3.4")).getText();
由于存在非法字符串,这给了我一个错误。 编辑: html代码如下所示:

<table id="Salarytable" class="dataTable" cellspacing="0" border="0" style="border-collapse:collapse;">
我知道如何使用xpath实现,但我想特别在css中实现。我该怎么做呢。 编辑:我已经在我的webdriver代码中给出了table#Salarytable>tbody>tr:nth类型(3)>td:nth类型(4),它工作得很好。但是我不明白在selenium ide中工作的定位器(css=table#Salarytable.dataTable.3.4)如何在webdriver代码中不工作。 谢谢。

阅读

根据线程CSS类名不能以数字开头,也不能仅仅是一个数字。您指定的选择器(
table#Salarytable.dataTable.3.4
)意味着HTML for table标记看起来像
,这是不可能的,因此您会收到错误。此外,您提供的HTML中没有“3”和“4”。因此,正确的选择器将是
table#Salarytable.dataTable

另外,最好仅通过id来定位表:

driver.findElement(By.id("Salarytable"))
编辑
关于命名规则,我可能错了。根据本文,这个数字实际上可能是一个有效的类名,但是这个名称在被引用时需要正确转义(参见链接文档)。不幸的是,我对CSS的了解还不足以详细阐述这个主题。

您能确认一下,您试图查找的html元素是否类似于
。您得到的堆栈跟踪也会非常有用。您的HTML是什么样子的?是什么导致了这个错误?请发布整个堆栈跟踪和错误消息谢谢回复。3和4表示行和列编号。在Selenium ide中,当我给出css=table#Salarytable.dataTable.3.4时,它被正确地突出显示了。到目前为止,在我的webdriver代码中,我已经将它作为表#Salarytable>tbody>tr:nth的类型(3)>td:nth的类型(4)给出,并且工作正常。然而,我不明白的是,为什么定位器在SeleniumIDE中工作,而不是在webdriver代码中工作。
driver.findElement(By.id("Salarytable"))