您的位置:首页 > 其它

使用get_attribute时,需要注意的地方

2015-04-16 11:37 302 查看
最近,公司在搞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

第一次写,有点忐忑,希望能够给大家带来帮助,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: