一、设置公共方法
二、xpath轴定位 
三、模仿鼠标事件
四、鼠标上下键盘
五、处理页面弹出框(打开本地文件)
六、切换窗口frame 
七、radiobox = 单选框
 
 
一、设置公共方法
封装方法
 
引用方法
 
 
二、xpath轴定位   //div[@id=”u1”]//a[@name=”tj_login”]
–父子层级
 
//div[@id=”u1”]//child::a[2] 
 
文本定位://a[text()=”立即注册”]
三、模仿鼠标事件
先导入:from
selenium.webdriver import ActionChains
单击右键:ActionChains(driver).context_click(loading).perform()
 
 
例:
loading_loc = ‘//div[@id=”u1”]//a[@name=”tj_login”]”]’
loading = driver.find_element(By.XPATH,loading_loc)
#点击右键
ActionChains(driver).context_click(loading).perform()  #context:上下文
perform:执行
 
移动鼠标到某个位置:导入
ActionChains(driver).move_to_element(setting).perform()
例:###移动鼠标到设置
setting_loc = ‘//span[@id=”s-usersetting-top”]’
setting = driver.find_element(By.XPATH,setting_loc)
ActionChains(driver).move_to_element(setting).perform()
sleep(3)
 
 
鼠标事件ActionChains基本用法
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停
perform() 执行所有ActionChains 中存储的行为
 
 
 
 
 
四、鼠标上下键盘
导入这个包from selenium.webdriver.common.keys import Keys
 
例:ActionChains(driver).send_keys(‘凡’).key_down(Keys.LEFT).key_up(Keys.LEFT).send_keys(‘猫’).perform()
 
 
 
# key_down 按下 key_up 松开
(可以理解为按住往左移的键,然后松开达到左移目的)
#
key_down(Keys.LEFT).key_up(Keys.LEFT) 括号里面的Keys:K是大写的,然后.LEFT方法,还有上、下等等
 
五、处理页面弹出框(当做自动化的时候页面出现弹出框,可以采取这个去除)
 
 
 
driver.switch_to.alert.accept()       # 切入到alert然后确定 (等于确定键)
driver.switch_to.alert.dismiss()      #切入到alert然后取消 (等于取消键)
driver.switch_to.alert.send_keys()    #切入到alert,然后输入内容
 
 
 
 
 
 
 
你知道怎么切换么(网页就以下三种要切换)
Selenium里面有三种切换,告诉为什么要切换,怎么切换(说代码怎么写)
1、Widow,切换窗口,也就是句柄 (为什么要切换,然后不走),
拿到新窗口的id
:在有些点击会弹出新的窗口,表面看是在新窗口,但实际还是在老的窗口,通过window_handles
拿到新的窗口进行切换,handles返回的是一个列表,通过window_handles拿到句柄,switch进行切换/
2、警告框alert :模态窗口。有时候打开新窗口,会弹出一个模态窗口,如果不解决他,是没有办法进行下面的操作的。可以通过alert切换进去,然后通过accept或者dismiss进行解决
3、Frame 
 
六、切换窗口frame 
先要切换到这个frame框架,才可以定位到这个框架里面的元素,进行自动化操作
 
方法一:切换窗口把id写进去即可以切换到窗口,
 
方法二:通方法过xpath切换
 
 
*切换到小窗口之后,要在原框架(窗口)继续操作,要切换回原先框架
driver.switch_to.default_content() 
切换回主frame
 
 
简历上写:善于编写高性能自动化测试脚本
 
七、radiobox = 单选框

 
 

 
第三个以及第6个不点

 

 Web**⾃动化
安装配置
1. 安装 chromedriver  https://npm.taobao.org/mirrors/chromedriver
选择和⾃⼰浏览器对应的版本
下载对应的版本,并将chromedriver 放到环境变量中。
2.安装 selenium
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/
simple # 设置下载源为清华⼤学镜像
pip install selenium
快速开始
from selenium import webdriver
# 创建浏览器
driver = webdriver.Chrome()
# 打开⽹址
driver.get(“http://www.baidu.com“) 
8种定位⽅式1. 
id ⽅式
fifind_element_by_id
# 1 使⽤id ⽅式定位元素
driver.find_element_by_id(“kw”).send_keys(“凡猫”) # kw为 id属性值
2. 
name ⽅式
# 2 使⽤ name ⽅式定位元素
driver.find_element_by_name(“wd”).send_keys(“helloworld”) #wd 为
name的属性值
3. 
class name ⽅式
# 3.使⽤class name⽅式
driver.find_element_by_class_name(“s_ipt”).send_keys(“helloworld”) 
# s_ipt 是class属性值
4 link_text ⽅式
# 4. link_text
driver.find_element_by_link_text(“新闻”).click() # 超链接的⽂本值
5 partial_link_text
# 5. partial_link_text
driver.find_element_by_partial_link_text(“新”).click()
css 定位def click_ele_by_text(text):
 # 获取所有符合条件的元素
 eles = driver.find_elements_by_css_selector(‘div[id=”u1”]>a’)
 # 定义⼀个空的list
 texts=[]
 # print(eles,len(eles))
 for ele in eles:
 print(ele.text)
 # 将元素⽂本值存到list中
 texts.append(ele.text)
 print(texts)
 # 根据⽂本值找到 元素的索引值
 ele_index= texts.index(text)
 # 点击具体元素
 eles[ele_index].click()
click_ele_by_text(“学术”)
练习
1. 登录
driver.get(‘http://47.100.225.199/admin.php?s=/admin/
logininfo.html’)
driver.find_element_by_name(‘username’).send_keys(“11111”)
driver.find_element_by_name(“login_pwd”).send_keys(“22222”)
# driver.find_element_by_class_name(“am-btn am-btn-primary am
radius btn-loading-example am-btn-sm am-btn-block”).click()
driver.find_element_by_tag_name(“button”).click()
jd 搜索商品 css 定位from selenium import webdriver
driver = webdriver.Chrome()
driver.get(‘https://www.jd.com‘)
driver.find_element_by_css_selector(‘input#key’).send_keys(“iphone
11”)
driver.find_element_by_css_selector(‘button[aria-label=”搜 
索”]’).click()
first_price_css = ‘ul>li[class=”gl-item”]:first-child 
div[class=”p-price”]’
first_iPhone_text =
driver.find_element_by_css_selector(first_price_css).text # 获取元
素⽂本
print(first_iPhone_text)
last_price_css = ‘ul>li[class=”gl-item”]:last-child div[class=”p
price”]’
last_iPhone_text =
driver.find_element_by_css_selector(last_price_css).text # 获取元素
⽂本
print(last_iPhone_text)
xpath 定位
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get(‘https://www.jd.com‘)
driver.find_element_by_xpath(‘//
input[@id=”key”]’).send_keys(“iphone11”)
driver.find_element_by_xpath(‘//button[@aria-label=”搜 
索”]’).click()
time.sleep(2)
# 价格 > 10000 商品prices_ele = driver.find_elements_by_xpath(‘//ul/li[@class=”gl
item”]//strong[@data-done=”1”][i>10000]’)
print(“——————“,len(prices_ele),”———————“)
for ele in prices_ele:
 print(ele.text)
作业练习代码
“””
爬取百度贴吧,将抓取到的内容 存放到csv⽂件中
最终结果格式如下:
data.csv
标题,内容
回复:听说最近耽美⽂超⽕哦《匠⼼》,孙茂顿时急了
主要测试点:
1. 元素定位
2. 基础知识回顾 for while expect
3. csv⽂件处理
“””
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
driver = webdriver.Chrome()
driver.get(“https://tieba.baidu.com/index.html“)
driver.find_element_by_xpath(‘//input[@id=”wd1”]’).send_keys(“孙茂
书”)
driver.find_element_by_xpath(‘//a[text()=”全吧搜索”]’).click()
# 爬取title ⽂本
def crawl_title():
 all_title_eles = driver.find_elements_by_xpath(‘//
span[@class=”p_title”]’)
 for ele in all_title_eles:
 print(ele.text)
# 爬取content ⽂本
def crawl_content():
 all_content_eles = driver.find_elements_by_xpath(‘//
div[@class=”p_content”]’)
 for ele in all_content_eles: print(ele.text)
while True:
 try:
 crawl_title()
 crawl_content()
 next_page_xpath = ‘//a[@class=”next”]’
 next_page = driver.find_element_by_xpath(next_page_xpath)
 next_page.click()
 time.sleep(3)
 except NoSuchElementException:
 print(“已经加载到最后⼀⻚”)
 driver.quit() #关闭浏览器
 break
苏宁 搜索iPhone11 
打印出
第⼀个和最后⼀个以及倒数第⼆个
⼿机价格
参考 css 定位 https://www.w3school.com.cn/cssref/css_selectors.asp
