python—web自动化(1)—元素定位方法的基本使用(添加商品,添加地址,小案例)
- 学习目的:掌握元素定位方法的使用
- 案例需求:登录-添加商品-添加送货地址
- 知识点:
- 隐式等待:webdriver.implicitly_wait(5)--这是一种智能的等待,表示每个页面加载时最大等待时间5s,
- 窗口最大化:webdriver.maximize_window()
- 窗口切换:
- 找出新窗口名字:new_window= webdriver.window_handles[1] --括号里填窗户索引
- 切换新窗口:webdriver.switch_to.window(new_window)
- 下拉框选择:(下面案例代码里查看)
- find_elements: 加s后能查询到所有符合条件的元素,通过索引取用
- 账号密码-网页元素:
![]()
- 检查输入框页面元素,通过id进行定位,send_keys('输入内容')
-
# 输入账号密码 # *********************【第一种元素定位方法:id】********************* shop_wdr.find_element_by_id('username').send_keys('cs001') shop_wdr.find_element_by_id('password').send_keys('123456')
-
- 登录按钮-网页元素:
![]()
- 检查登录按钮页面元素,通过class定位,click()点击
-
# *********************【第二种元素定位方法:class_name】********************* # 点击登录按钮 shop_wdr.find_element_by_class_name('login_btn').click()
-
- 搜索功能-网页元素:
![]()
- 检查输入框的页面元素,通过name定位
-
# *********************【第三种元素定位方法:name】********************* # 搜索商品 shop_wdr.find_element_by_name('keyword').send_keys('连裤袜') shop_wdr.find_element_by_class_name('btn1').click()
-
- 搜索结果-网页元素:
![]()
- 检查商品的页面元素,发现有a标签,通过name定位
-
# *********************【第四种元素定位方法:link_text】********************* # 选择商品,进入详情页面 shop_wdr.find_element_by_link_text('绫天生丝滑「云」12D薄款丝滑黑丝连裤袜').click()
-
- 商品详情-网页元素:
![]()
- 跳转到商品详情页后,浏览器产生了新页面,所以需要切换页面
-
# 需要指定操作的页面窗口 new_windows = shop_wdr.window_handles[1] # 页面窗口切换 shop_wdr.switch_to.window(new_windows) # *********************【第五种元素定位方法:xpath】********************* # 加入购物车 shop_wdr.find_element_by_xpath('//*[@id="joinCarButton"]').click()
-
- 结算页面-网页元素:
class里有shopCar_btn_03和f1,使用css_selector可以把两个class name合并进行定位,用.号连接
-
# 去购物车结算 shop_wdr.find_element_by_class_name('shopCar_T_span3').click() # *********************【第六种元素定位方法:css_selector】********************* shop_wdr.find_element_by_css_selector('.shopCar_btn_03.fl').click()
- 确认地址-网页元素:
![]()
-
# 填写送货地址 shop_wdr.find_element_by_class_name('add-address').click()
- 填写地址-网页元素:
![]()
- 下拉框-处理方式***:
- 省:
-
# 下拉选项框1-省 # 通过id找到省,但这是普通网页元素,click和send_keys都选不到下拉框里的值 sheng = shop_wdr.find_element_by_id('add-new-area-select') # 导入(from selenium.webdriver.support.select import Select)把省这个普通网页元素,强制转换成下拉框元素 # 下拉框元素里,通过可见的文本选择方法,选择对应选项 Select(sheng).select_by_visible_text('江苏省')
-
- 市
- 网页元素:
![]()
- 代码:
-
# 下拉选项框2-市 '''id="linkagesel_475448后面的数值会变动,class_name的值和下拉框1的值一样, 此时用find_elements(找到所有add-new-area-select后通过[1]取第二个元素)''' shi = shop_wdr.find_elements_by_class_name('add-new-area-select')[1] # 把shi强制转换成下拉框元素 Select(shi).select_by_visible_text('无锡市')
- 区
- 网页元素:
![]()
- 代码:
-
# 下拉选择框3-区 '''id="linkagesel_129166动态变化,整个页面select标签只有3个, 此时用find_elements_by_tag_name(找到所有select后通过[2]取第三个元素) ''' qu = shop_wdr.find_elements_by_tag_name('select')[2] ## 把shi强制转换成下拉框元素 Select(qu).select_by_visible_text('市辖区')
- 省:
- 最后把收款人,手机号,详细地址,邮编填写完,点击确认
- 代码
-
# 填写名字 shop_wdr.find_element_by_name('address[address_name]').send_keys('cs001') # 填写手机号 shop_wdr.find_element_by_name('address[mobile]').send_keys('13700000001') # 填写详细地址 shop_wdr.find_element_by_class_name('add-new-name-span-2').send_keys('阳光春天66号') # 填写邮编 shop_wdr.find_element_by_name('address[zipcode]').send_keys('666666') #点击确认 shop_wdr.find_element_by_class_name('aui_state_highlight').click()
- 提交后的效果:











浙公网安备 33010602011771号