最近,公司在搞web自动化的框架,所以这几天一直在学习python+selenium的东西。在练习定位元素的时候,遇到一个比较奇怪的问题,现在给大家分享一下。希望能够给大家的学习带来帮助。
如上图所示,我的目的是想选择没有售罄的尺码(其中XL是已经售罄的),代码实现如下
#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Ie()
driver.get('http://item.yohobuy.com/product/pro_143453_198737/CLOTTEETaoTouWeiYiCLOTHCA50118.html')//打开网站
time.sleep(3)
element_father = driver.find_element_by_xpath("//*[@id='sizeList']") //获取上一级目录对象
element = element_father.find_elements_by_class_name("left") //获取到一组目的元素
//选中没有售罄的商品尺码
for ele in element:
if ele.get_attribute('num') != 0:
ele.click()
break
else:
continue
一直很奇怪的是,按照上面的实现,永远的是选中第一个XL(已经售罄的),纠结了好久,也调试了很久,才发现get_attribute这个函数获取的属性值是unicode类型,应该算是一个字符串,所以ele.get_attribute('num')取得的元素永远都是不为0,导致选中的永远是已经售罄的“XL”。做如下改动后,就可以正确的执行。
#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Ie()
driver.get('http://item.yohobuy.com/product/pro_143453_198737/CLOTTEETaoTouWeiYiCLOTHCA50118.html')//打开网站
time.sleep(3)
element_father = driver.find_element_by_xpath("//*[@id='sizeList']") //获取上一级目录对象
element = element_father.find_elements_by_class_name("left") //获取到一组目的元素
//选中没有售罄的商品尺码
for ele in element:
if int(ele.get_attribute('num')) != 0: //把取得元素类型转化成int型
ele.click()
break
else:
continue
第一次写,有点忐忑,希望能够给大家带来帮助,谢谢。