有人能告诉我如何正确找到以下代码的css选择器。我需要知道css选择器而不是xpath,因为web元素不能使用xpath。
<div id="drag" class="dojoDndSource dojoDndTarget dojoDndContainer" style="height:300px;width:250px;font-size:1.2em;border:2px solid #ccc; padding:1em;overflow:auto; " data-dojo-type="dojo.dnd.Source">
<div id="1" class="dojoDndItem" style="padding:.5em;">1</div>
<div id="2" class="dojoDndItem" style="padding:.5em;">2</div>
<div id="3" class="dojoDndItem dojoDndItemAnchor" style="padding:.5em;">3</div>
<div id="99" class="dojoDndItem" style="padding:.5em;">T4</div>
<div id="100" class="dojoDndItem" style="padding:.5em;">T5</div>
我希望用id="99"
选择div。我尝试过使用以下内容:
driver.findElement(By.cssSelector(".T4"));
driver.findElement(By.cssSelector("//input[@id='gbqfq']"));
答案 0 :(得分:1)
您用于查找相关元素的代码都是错误的,如下所述:
1 - driver.findElement(By.cssSelector(".T4"));
因为哟你已经把“。”在“T4”之前,它将搜索具有T4类的元素,该元素不存在。 “T4”,实际上是您想要找到的元素的 innerHTML / text 。
<强> 2 - 强> driver.findElement(By.cssSelector("//input[@id='gbqfq']"));
正如 @BoltClock 所评论的那样,这实际上是您尝试使用cssSelector方法的 xpath。
您可以使用下面的代码使用xpath定位元素,而不是:
driver.findElement(By.xpath("//div[.='T4']"));
这会将 div元素与精确的innerHTML / text定位为'T4'。
此外,您还可以使用'id',前提是它是唯一的,并且不会动态更改,如下所示:
1 - driver.findElement(By.xpath("//div[@id='99']"));
这将找到id为'99'的div元素。
2 - driver.findElement(By.id("99"));
这将找到ID为“99”的元素。
第3 - 强> driver.findElement(By.cssSelector("div[id='99']"));
这也会找到id为'99'的div元素。
答案 1 :(得分:0)
您正在使用XPath
选择器By.cssSelector()
这是错误的,并且在.
表示类,您尝试传递文本。您无法在此momenet上使用css选择器执行基于文本的搜索。在这种情况下,XPath
是最佳选择。
nth-child()
, cssSelector
可让您找到带索引的子元素。见this
//css walk thorugh with index
.dojoDndItem:nth-child(1)
但是,我希望在这种情况下xpath
基于文本的搜索
//div[.='1']
//div[.='T4']
...等
答案 2 :(得分:0)
您可以直接使用driver.findElement(By.id("99"));
,或者如果您想使用css选择器,请使用下面的选项。你应该使用#
,如果你试图通过id和.
,如果你按类名获得它。 Id选择器是最快的,所以尽量使用id选择器。
driver.findElement(By.cssSelector(&#34;#99&#34));