Selenium根据class属性进⾏不同⽅式的定位
⽆论是做UI⾃动化测试,还是爬⾍,页⾯元素定位始终都是我们必须要做的⼯作,Selenium WebDriver API 中提供了⼤量的⽅法帮助我们进⾏元素定位,有许多⽅法对页⾯的元素进⾏定位,可以根据⾃⼰的需要选择最合适的⼀种。selenium提供了8种元素定位的⽅法。
图为selenium⼋种元素定位思维导图
在前端的单个页⾯中,通过id定位是万⽆⼀失的,因为id值是唯⼀的。但是,并不是每个元素都有id属性,所以我们可以通过其他元素进⾏元素定位。
今天要说的就是元素定位⽅法之⼀:class定位。
⼀、简单c la ss定位
如果⼀个属性有class值,我们要定位该元素可能⽅式是多样的
1. ⾸先想到可以根据class name进⾏定位。
代码如下:
driver.find_element(By.CLASS_NAME, “s_ipt”)
2. 同时也可以根据xpath定位:
代码如下:
driver.find_element(By.XPATH, ‘//input[@s_ipt=’s_ipt’”)
3. 第三种⽅法根据css selector定位:cssclass属性
代码如下:
driver.find_element(By.CSS_SELECTOR, “.s_ipt”)
⼆、复合c la ss定位
如上图span元素,class值⽐较长,关键中间有空格,这种称之为复合class。
定位元素的时候⽅式如下
1. 根据class name进⾏定位时,每次只能选取其中⼀个name值定位。
代码如下:
driver.find_element(By.CLASS_NAME, “s_btn_wr”)
或者driver.find_element(By.CLASS_NAME, “bg”)
2. 可以根据xpath定位,直接做字符串匹配与前边相同:
代码如下:
driver.find_element(By.XPATH, ‘//input[@s_ipt=’bg s_ipt’”)
3. 第三种⽅法根据css selector定位:
代码如下:
driver.find_element(By.CSS_SELECTOR, “.bg.s_ipt”) # 即查class name为bg和s_ipt的元素
driver.find_element(By.CSS_SELECTOR, “.s_ipt”) # 查class name为s_ipt的元素
举个例⼦,拿百度⾸页的源码给⼤家说明⼀下,在页⾯源码⽂件,定位到元素后,右键,效果如下:
⽣成代码后复制,针对这个场景可以直接拿来⽤,但基于现在的⽹页更新都很频繁,建议还是要简单学习下xpath、css selector等⽅法,毕竟这些是⽐较重要的,那样就可以写出相对灵活的代码,在⽇常很有帮助,对页⾯⼀些的细⼩的调整会有更强的适应性。
综上所述,并不是所有的元素根据class值进⾏定位时,直接把值复制过来匹配即可,在不同的定位⽅式中其书写是不同的,同时有简单和复合class的区分。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论