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
元素,而不是通过 xpath
。 cssSelector
可以吗?有人可以给我一个提示吗?
【问题讨论】:
【参考方案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 的复合类名称错误
如何在 Selenium 中找到具有特定文本的跨度? (使用 Java)