html - 为 selenium 测试寻找 CSS 选择器

标签 html css selenium

谁能告诉我如何正确找到以下代码的 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']")); 

最佳答案

您用来定位相关元素的代码都是错误的,如下所述:

1- driver.findElement(By.cssSelector(".T4"));
因为你你已经把“。”在“T4”之前,它将搜索不存在的具有类 T4 的元素“T4”,其实就是你要定位的元素的innerHTML/text

2-driver.findElement(By.cssSelector("//input[@id='gbqfq']"));
正如 @BoltClock 评论的那样,这实际上是一个 xpath,您正试图将其与 cssSelector 方法一起使用。

您可以使用以下代码使用 xpath 定位元素:

driver.findElement(By.xpath("//div[.='T4']"));

这会将具有与“T4”完全相同的 innerHTML/text 的 div 元素定位。

此外,您还可以使用“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 元素。

关于html - 为 selenium 测试寻找 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483177/

相关文章:

javascript - 获取 id 并将其设置为 IF 加载 Progress-Bar 的条件

Javascript 图像在 IE 中的行为不同

html - 调整浏览器窗口大小时,页脚的宽度不是 100%

html - 父 div 隐藏的下拉菜单

java - Java中如何获取exe的相对路径

python - Selenium:获取 Tableau View 中的所有可见文本

html - 这种响应式布局可以使用 Flexbox CSS 吗?

javascript - jQuery UI Datepicker hash href 被 AngularJs Routing 误解

javascript - JQUERY、CSS、事件处理程序

python - 如何处理 Robot Framework RIDE 中的 Windows 身份验证弹出窗口?