Selenium:使用跨度类名称访问元素

Posted

技术标签:

【中文标题】Selenium:使用跨度类名称访问元素【英文标题】:Selenium: access element using span class name 【发布时间】:2017-12-01 11:52:34 【问题描述】:

我有这个很复杂的xpath

/html/body/div/div/div[2]/div/div/div/div[3]/div/table[1]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[1]/table/tbody/tr/td/table/tbody/tr[1]/td/div/div/table/tbody[1]/tr[3]/td[2]/div/table/tbody/tr/td/table/tbody/tr/td[1]/span/input

span 有这个class="z-combobox-designation z-combobox"

我需要使用 class 访问 span 元素,而不是通过 xpathcssSelector 可以吗?有人可以给我一个提示吗?

【问题讨论】:

【参考方案1】:

是的,您可以通过这种方式使用 css 选择器来根据复合类选择您的元素

driver.findElement(By.cssSelector(".z-combobox-designation.z-combobox"));

或使用span.z-combobox-designation.z-combobox等类指定标签名称

如果您的 HTML 中有多个相同类型的元素,则考虑它的唯一父级并找到相同的元素

例如您的元素的父 table 具有唯一 ID,例如因此您可以考虑该表标签并根据该表定位span,例如

table#someid span.z-combobox-designation.z-combobox

【讨论】:

我认为它有效,它没有导致任何错误。谢谢!顺便说一句,要访问带空格的类,您使用 dot(.) 代替。真的是这样处理有空格的类吗? 实际上,如果您在 classname 中看到空格,则 classame 的名称中没有任何空格,这意味着有多个由空格分隔的类。在您的元素 class="z-combobox-designation z-combobox" 中有 2 个类 1 = z-combobox-designation 和 2 = z-combobox in css 选择器 dot(.) 用于定义它的类

以上是关于Selenium:使用跨度类名称访问元素的主要内容,如果未能解决你的问题,请参考以下文章

不允许使用硒化合物类名称

无效的选择器:不允许使用 Selenium 的复合类名称错误

如何使用 javascript 获取隐藏的跨度值

如何在 Selenium 中找到具有特定文本的跨度? (使用 Java)

如何在 Selenium 中使用 @FindBy 注释来处理跨度文本?

有啥方法可以通过 selenium 获取元素的类名