selenium+python学习——webdriver总结

1、学习自动化前,需先了解html和python的基础语法

2、安装环境

1)安装python+pycharm安装方法

可参考:微信公众号:软件安装管家(其中含有安装包以及安装方法)

2)安装selenium

可参考博文:https://www.cnblogs.com/yuer02/p/11905605.html

3、基础学习

1)需掌握元素定位方法

a、单元素八大定位方式

b 、xpath结合属性定位

c 、css结合属性定位

 

css定位方法和xpath定位方法的区别:两者基本能定位所有的元素。xpath定位元素慢,语法很长,还不稳定,而css的定位更快,更简洁。但本人还是比较习惯用xpath

d、下来框定位方式

参考链接:https://www.cnblogs.com/yoyoketang/p/6128636.html

其实,元素定位方式还有find_elements_by_xxx,与8种元素定位方式一样,只需要加上索引;另外还可以通过用By来定位(后续再研究)

2)操作页面

 还有其他的,后续补充

3)操作元素

 4)框架集

 5)判断元素是否符合预期

可参考链接:http://www.mamicode.com/info-detail-1720150.html

 6)多窗口、句柄

 7)加载chrome配置

参考链接:https://www.cnblogs.com/yuer02/p/12613920.html

8)等待

强制等待:time.sleep(时间)

隐式等待:driver.implicitle_wait(时间)

显式等待:WebDriverWait;用法参考博文:https://www.cnblogs.com/yoyoketang/p/6517477.html

9)alert

alert警告框、confirm确认框、prompt消息对话框

具体详见链接:https://www.cnblogs.com/yuer02/p/12625551.html

 相关代码:

from selenium import webdriver
import time as t
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By


driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")
t.sleep(3)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").send_keys(Keys.ENTER)
# 显式等待,待元素定位
WebDriverWait(driver,10).until(ec.presence_of_element_located((By.ID,"kw")))
# 鼠标悬停
mouse = driver.find_element_by_name("tj_settingicon")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text('搜索设置').click()
# # 隐式等待
# driver.implicitly_wait(10)
t.sleep(5)
# 定位下拉框
select = driver.find_element_by_name("NR")
# # 以索引的方式定位
# Select(select).select_by_index(2)
# print("下拉框选择的最新条数是:",select.get_attribute('value'))
# 以value定位
# Select(select).select_by_value("10")
# print("下拉框选择的最新条数是:",select.get_attribute('value'))
# 以文本定位
Select(select).select_by_visible_text("每页显示10条")
print("下拉框选择的最新条数是:",select.get_attribute('value'))
t.sleep(3)
driver.find_element_by_xpath('//*[@id="se-setting-5"]/label[1]').click()
t.sleep(4)
# 判断是否选中is_selected()
s = driver.find_element_by_xpath('//*[@id="se-setting-5"]/label[1]').is_selected()
if s == False:
    driver.find_element_by_xpath('//*[@id="se-setting-5"]/label[1]').click()
    print(s)
else:
    print(True)
driver.find_element_by_css_selector("#gxszButton > a.prefpanelgo").click()
# alert弹框
print("alert弹出框的文本信息为:{0}".format(driver.switch_to.alert.text))  # 获取弹出框的文本信息
driver.switch_to.alert.accept()
# 多窗口、句柄
driver.get("http://bj.ganji.com/")
h = driver.current_window_handle
print(h)
driver.find_element_by_link_text("全职").click()
all_h = driver.window_handles
print(all_h)
# # 用索引的方式
# driver.switch_to.window(all_h[0])
# 通用用法
for i in all_h:
    if i != h:
        driver.switch_to.window(i)
        print(driver.title)
# 关闭新窗口
driver.close()
driver.quit()

  

posted @ 2020-04-03 14:12  Penny悦  阅读(478)  评论(0编辑  收藏  举报