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

      最近,公司在搞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

  第一次写,有点忐忑,希望能够给大家带来帮助,谢谢。

转载于:https://www.cnblogs.com/nash-test/p/4431586.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值