Selenium在定位的class含有空格的复合类的解决办法整理1.class属性唯⼀但是有空格,选择空格两边唯⼀的哪⼀个
<div id="tempConfigTable"class="dtb-style-1 table-dragColumns" >
<th id="" tid="grid-row-2"class="tabth field_security_dispay txt-left ">
2.class属性科普
♦ class属性中间的空格并不是空字符串,那是间隔符号,表⽰的是⼀个元素有多个class的属性名称,class属性是⽐较特殊的⼀个,除了class这个元素类型有多个属性外,其他的像name,id是没多个属性的。
3.class的定位
♦ 既然知道class属性有空格就是有多个属性了,那么定位的时候取其中⼀个就⾏(并且要确定他的唯⼀性),也就是说 class="dtb-style-1 table-dragColumns"这两个属性选其中⼀个就⾏,取dtb-style-1 or table-dragColumn都是可以的,只要想办法保持唯⼀性就⾏。
4.判断元素唯⼀性
♦ F12切换到HTML界⾯,Ctrl + f 出现搜索框然后输⼊关键字如:然后回车,如图所⽰:
5.class属性不唯⼀怎么办
♦ 如果这个class的多个属性都不唯⼀怎么办?元素不唯⼀不要慌,可以⽤复数定位,把所有相同元素定位出来,按下表取第⼏个就⾏。如:
self.driver.find_elements_by_class_name('table-dragColumn')[0].click()
6.css定位
♦ css定位class多个属性时要给元素前⾯加个点(.)就⾏,然后空格变成了点(.)就能定位了
♦当然css也可以取class属性的其中⼀个属性(保证唯⼀性)来定位,定位⽅法是灵活多变的。
如:
♦css定位:
cssclass属性self.driver.find_element_by_css_selector('.dtb-style-1.table-dragColumns').click()#前⾯加(.)空格地⽅⽤点(.)来代替
♦class单个属性定位
1self.driver.find_element_by_css_selector('.table-dragColumns').click()#⽤单个属性来定位前⾯加个(.)
♦直接包含空格的css定位神器
self.driver.find_element_by_css_selector('class="dtb-style-1 table-dragColumns').click()#包含整个类
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论