Selenium在定位的class含有空格的复合类的解决办法整理

1.class属性唯一但是有空格,选择空格两边唯一的哪一个

<div id="tempConfigTable" class="dtb-style-1 table-dragColumns" style="height: 371px; position: relative;">

<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定位:

self.driver.find_element_by_css_selector('.dtb-style-1.table-dragColumns').click()#前面加(.)空格地方用点(.)来代替

♦class单个属性定位

1
self.driver.find_element_by_css_selector( '.table-dragColumns' ).click()#用单个属性来定位前面加个(.) 

♦直接包含空格的css定位神器

self.driver.find_element_by_css_selector('class="dtb-style-1 table-dragColumns').click()#包含整个类
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Selenium中的class定位是通过元素的class属性来定位元素。可以使用以下方法来定位元素: 1. find_element_by_class_name():通过元素的class属性值来定位元素。 2. find_elements_by_class_name():通过元素的class属性值来定位一组元素。 例如,要定位一个class属性值为“myclass”的元素,可以使用以下代码: ``` from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") element = driver.find_element_by_class_name("myclass") ``` 这将返回第一个class属性值为“myclass”的元素。如果要定位多个元素,可以使用find_elements_by_class_name()方法。 ### 回答2: Selenium是一个自动化测试工具,主要用于自动化测试Web应用程序。通过Selenium,我们可以模拟用户在Web应用程序中的操作,并检查Web应用程序的响应。 其中,Selenium class用于定位Web应用程序中的元素。定位Web应用程序中的元素可以通过多种方式来实现,如根据元素的ID、Name、Class、标签名等。以下是几种常用的定位元素方法: 1. 根据元素的ID定位元素 通过driver.find_element_by_id()方法可以根据元素的ID定位元素。示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") element = driver.find_element_by_id("element_id") ``` 上述代码中,Selenium在打开http://example.com网页后,通过find_element_by_id()方法根据元素ID获取了该元素的WebElement对象。 2. 根据元素的Name定位元素 通过driver.find_element_by_name()方法可以根据元素的Name定位元素。示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") element = driver.find_element_by_name("element_name") ``` 上述代码中,Selenium在打开http://example.com网页后,通过find_element_by_name()方法根据元素Name获取了该元素的WebElement对象。 3. 根据元素的Class定位元素 通过driver.find_element_by_class_name()方法可以根据元素的Class定位元素。示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") element = driver.find_element_by_class_name("element_class") ``` 上述代码中,Selenium在打开http://example.com网页后,通过find_element_by_class_name()方法根据元素Class获取了该元素的WebElement对象。 4. 根据元素的标签名定位元素 通过driver.find_element_by_tag_name()方法可以根据元素的标签名定位元素。示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://example.com") element = driver.find_element_by_tag_name("a") ``` 上述代码中,Selenium在打开http://example.com网页后,通过find_element_by_tag_name()方法根据元素标签名获取了该元素的WebElement对象。 总之,Selenium提供了丰富的方法用于定位Web应用程序中的元素,通过这些方法,我们可以方便地获取到需要测试的元素,并进行自动化测试。 ### 回答3: Selenium是一个自动化测试框架,它提供了很多方法来定位Web元素,其中之一就是通过class定位元素。 class是HTML标签的一个属性,可以用来指定元素的样式名称。通过class定位元素,可以通过元素样式名称找到对应的元素。 在Selenium中,使用find_elements_by_class_name()方法来定位元素。该方法返回一个列表,其中包含匹配指定名的所有元素。 下面是定位元素的示例代码: ```python from selenium import webdriver # 创建一个浏览器对象 browser = webdriver.Chrome() # 打开页面 browser.get('http://example.com') # 通过class定位元素 elems = browser.find_elements_by_class_name('example-class') # 输出元素的文本内容 for elem in elems: print(elem.text) # 关闭浏览器 browser.quit() ``` 在上面的代码中,首先创建一个Chrome浏览器对象,然后打开一个网页。接着使用find_elements_by_class_name()方法定位元素,将元素列表赋值给elems变量。最后遍历元素列表,输出每个元素的文本内容。 需要注意的是,如果有多个元素具有相同的名,find_elements_by_class_name()方法会返回所有匹配的元素。如果只想返回第一个匹配的元素,可以使用find_element_by_class_name()方法。 总之,使用class定位元素是Selenium定位元素的重要一种方式,可以方便地找到对应的元素。需要结合实际情况,选择合适的方法来定位元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值