# 9)css 定位【重要】
# driver.find_element_by_css_selector('#kw').send_keys('多测师') #id选择器定位
# driver.find_element_by_css_selector('.s_ipt').send_keys('多测师') #class选择器
# driver.find_element_by_css_selector('[name=wd]').send_keys('多测师')
# driver.find_element_by_css_selector('[class=s_ipt]').send_keys('多测师')
# driver.find_element_by_css_selector('[name=wd][class=s_ipt]').send_keys('多测师') #组合定位
# driver.find_element_by_css_selector('[autocomplete=off]').send_keys('多测师')
# driver.find_element_by_css_selector('span>input').send_keys('多测师') #上级定位
# driver.find_element_by_css_selector('form>span>input').send_keys('多测师') #上上级定位
# 14、定位文本框和密码框
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
# driver.maximize_window()
# sleep(2)
# driver.find_element_by_id('userAccount').send_keys('admin')
# driver.find_element_by_id('loginPwd').send_keys('123456')
# driver.find_element_by_id('loginBtn').click() #点击按钮
# sleep(5)
# driver.close() #关闭浏览器
# 15、通过send_keys 方法上传文件
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/upload_file.html')
# driver.maximize_window()
# driver.find_element_by_id('file').send_keys(r'C:\Users\Administrator\Desktop\app.txt')
# 16、定位百度隐藏框【重要】
# from selenium import webdriver
# from time import sleep
# from selenium.webdriver.common.action_chains import ActionChains #导入ActionChains
#
# driver = webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://www.baidu.com')
# sleep(2)
# 第一种方法
# driver.find_element_by_id('s-usersetting-top').click()
# driver.find_element_by_link_text('搜索设置').click()
# sleep(2)
# driver.find_element_by_link_text('保存设置').click()
# sleep(2)
# alert = driver.switch_to.alert #【进入到alaert弹框】
# print(alert.text) #打印alert弹框上的内容 打印的内容:已经记录下您的使用偏好
#
# alert.accept() #点击确定按钮
# alert.dismiss() #点击取消按钮
# 第二种方法 mouse orver
# mouse = driver.find_element_by_id('s-usersetting-top') #定位设置赋值给mouse
# ActionChains(driver).move_to_element(mouse).perform() #move_to_element就是移送到设置这个网页元素上面
# #perform()执行
# driver.find_element_by_link_text('搜索设置').click()
# sleep(2)
# driver.find_element_by_link_text('保存设置').click()
# sleep(2)
# alert = driver.switch_to.alert #【进入到alaert弹框】
# print(alert.text) #打印alert弹框上的内容 打印的内容:已经记录下您的使用偏好
#
# alert.accept() #点击确定按钮
# alert.dismiss() #点击取消按钮
# 17、selenium 当中的等待【重要】
'''
1、线程等待 sleep(5) 不管有没有加载出来都会的等待5s
2、隐式等待 implicity_wait(5) 智能等待,作用域全局,如果在5s内全部网页加载完成,
则会往下执行,超过5s 会报错
3、显示等待 WebDriverWait 作用于特定的元素,每个0.5s 去书刷新和寻找一次,如果找不到
则往下执行,超过5s报错
'''
# from selenium import webdriver
# from time import sleep
# from selenium.webdriver.support import expected_conditions as EC
# from selenium.webdriver.common.by import By #导入By类
# from selenium.webdriver.support.wait import WebDriverWait
#
# driver = webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://www.baidu.com')
# driver.maximize_window()
# sleep(3) #线程等待
# driver.implicitly_wait(5) #隐式等待
# driver.find_element_by_id('kw').send_keys('多测师')
# WebDriverWait(driver,5,poll_frequency=0.5).until(EC.presence_of_all_elements_located((By.ID,'su')))
# sleep(10)
# driver.close()
# 18、获取文本信息和标题
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('https://www.baidu.com')
# driver.maximize_window()
# sleep(3)
# 1)获取页面文本信息
# value=driver.find_element_by_xpath('//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]').text
# print(value) #庆祝香港回归25周年大会
# if value=='庆祝香港回归25周年大会':
# print('获取成功')
# else:
# print('获取失败')
#
# 2)获取title
# 第一种断言方法
# title= driver.title
# if title =='百度一下,你就知道':
# print('获取成功')
# else:
# print('获取失败')
# 第二种断言方法
# assert title=='百度一下,你就知道' #不会打印
# 19、刷新窗口,打开一个新的窗口,返回上一步,获取窗口大小
# 1)获取窗口大小
# s=driver.get_window_size()
# print(s) #{'width': 1296, 'height': 696}
#
# # 2)返回上一步
# driver.find_element_by_id('kw').send_keys('多测师')
# sleep(5)
# driver.find_element_by_id('su').click() #点击百度按钮
# sleep(5)
# driver.back() #返回上一步
# sleep(10)
# 3)刷新窗口
# driver.refresh()
# 4)打开一个新的窗口
# win = 'window.open("http://www.jd.com")'
# driver.execute_script(win)
# 20、切换一个新窗口【重要】
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
#
# # 打开第一个窗口
# driver.get('https://www.baidu.com')
# driver.maximize_window()
# sleep(3)
# 打开第二个窗口
# win = 'window.open("http://www.jd.com")'
# driver.execute_script(win)
# title = driver.title
# print(title) #百度一下,你就知道【当前窗口的主窗口还是百度】
# driver.find_element_by_id('kw').send_keys('123') #验证到底在那个窗口,在百度窗口
# handle = driver.current_window_handle
#获取当前百度窗口的handle 句柄==》一个用标识对象或者标识符
# print(handle) #CDwindow-ACA516BA77B096CF0DDC57335813E701
#
# handles = driver.window_handles #获取所有窗口的句柄
# print(handles) #['CDwindow-E132FA6BE33A3D748476F386D062FF51', 'CDwindow-675F04496D6E7770E83B251031973543']
# 1)通过索引值去切换窗口
# driver.switch_to.window(handles[1])
# title1 = driver.title
# print(title1) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
# sleep(5)
# driver.find_element_by_xpath('//*[@id="navitems-group1"]/li[1]/a').click() #已切换到东京页面
# 2)通过for循环切换
# for i in handles:
# if i!=handle: #判断如果i不是当但百度的句柄就切换窗口
# driver.switch_to.window(i) #切换到京东页面
# title2 = driver.title
# print(title2) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
# 21、下拉框【重要】
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.get('https://www.ctrip.com/')
driver.maximize_window()
s = driver.find_element_by_id('J_roomCountList') #定位到房间
#第一种定位 索引定位 0开始
Select(s).select_by_index(4) #房间数是5
#通过value 值进行定位
Select(s).select_by_value('6') #房间是6
#通过可见的文本信息进行定位
Select(s).select_by_visible_text('7间') #房间数是7间
# 22、警告型弹框【重要】
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/alert.html')
# driver.maximize_window()
# alert = driver.switch_to.alert
# print(alert.text) # 技术大牛你好啊
#
# sleep(5)
# alert.accept() #点击确定按钮
# sleep(5)
# alert.accept() #再次确定按钮
# alert.dismiss() #点击取消按钮
# sleep(5)
# alert.accept() #点击取消后点击确定按钮
# 23、输入型弹框
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/prompt.html')
# driver.maximize_window()
#
# driver.find_element_by_css_selector('.alert').click()
# sleep(5)
# alert = driver.switch_to.alert
# alert.send_keys('http://www.baidu.com') #输入网址
# sleep(5)
# alert.accept() #点击确定
# # alert.dismiss() #点击取消
#
# sleep(10)
# driver.close()
# 24、确认型弹框
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/enter.html')
# driver.maximize_window()
#
# driver.find_element_by_css_selector('.alert').click()
# sleep(5)
# alert = driver.switch_to.alert
# print(alert.text) #这是一个确认消息框示例,是否执行删除操作?
# # alert.accept() #点击确定
# alert.dismiss() #点击取消
# 25、iframe 框【重要】
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('http://mail.163.com')
# driver.maximize_window()
# 第一种方法定位iframe方法
# iframe = driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]') #定位到iframe框
# driver.switch_to.frame(iframe) #进入iframe框
# sleep(3)
# 第二种方法定位iframe 页面的iframe框索引从0开始
# driver.switch_to.frame(0)
# 第三种方法定位iframe 通过tag标签
# iframe = driver.find_elements_by_tag_name('iframe') #定位到iframe 框
# driver.switch_to.frame(iframe)
#
# sleep(5)
# driver.find_element_by_name('email').send_keys('13923876846')
# driver.find_element_by_name('password').send_keys('Duanzl888')
# driver.find_element_by_id('dologin').click()
# sleep(5)
# driver.close()
# 26、滚动条
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('https://www.jd.com')
# driver.maximize_window()
#往下滑的操作
# js1 = 'window.scrollTo(0,20000)'
# driver.execute_script(js1)
#
# sleep(5)
#往上滑到顶部
# js2 = 'window.scrollTo(0,0)'
# driver.execute_script(js2)
# 27、Keys类
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys #导入Keys类
driver = webdriver.Chrome()
driver.get('https://baidu.com')
driver.maximize_window()
driver.find_element_by_id('kw').send_keys('pythonn')
sleep(2)
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE) #删除最后一个字符
sleep(2)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a') #全选
sleep(2)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x') #剪切
sleep(2)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'v') #粘贴
driver.find_element_by_id('su').click() #点击百度按钮
# 第二种封装一个公共元素
def find_element(m,*n):
'''
封装一个定位元素的公共方法
:param m:
:param n:
:return:
'''
return driver.find_element_by_id(m).send_keys(n)
if __name__ == '__main__':
find_element('kw','pythonn')
find_element('kw',Keys.BACK_SPACE) #删除最后一个字符
find_element('kw',Keys.CONTROL,'a')
find_element('kw', Keys.CONTROL, 'x')
find_element('kw', Keys.CONTROL, 'v')
find_element('kw', Keys.ENTER)
|
|