from selenium import webdriver # 从selenium库导入webdriver包
driver=webdriver.Chrome() # 创建一个谷歌浏览器的对象,driver就是对象,对象吗自定义
driver.get('https://www.baidu.com/') # 用谷歌浏览器打开百度首页
# 浏览器最大化
driver.maximize_window()
1、id定位
通过driver对象调用find_element_by_id方法找到百度输入框,然后调用send_keys方法往输入框输入方法
driver.find_element_by_id('kw').send_keys('NBA')
2、name定位
driver.find_element_by_name('wd').send_keys('乔丹')
# 3、class 定位
driver.find_element_by_class_name('s_ipt').send_keys('科比')
4、精准匹配
driver.find_element_by_link_text('hao123').click()
5、模糊匹配
driver.find_element_by_partial_link_text('hao1').click()
6、JavaScript定位 var是定义变量的意思 a 就是一个变量
js='var a=document.getElementById("kw").value="NBA"'
driver.execute_script(js)
7、Tag_name 定位,通过标签名定位
s=driver.find_elements_by_tag_name('input') # 拿到页面中所有input标签
print(type(s))
print(len(s))
for i in s:
if i.get_attribute('id')=='kw':
i.send_keys('NBA')
8、xpath定位,//表示相对路径,*号表示任意标签
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('NBA')
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('乔丹') # 可直接接标签名
driver.find_element_by_xpath('//input[@name="wd"]').send_keys('科比')
driver.find_element_by_xpath('//*[@class="s_ipt"]').send_keys('皮蓬')
driver.find_element_by_xpath('//*[@id="kw" and @class="s_ipt"]').send_keys('詹姆斯')
driver.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys('哈登') # 上上级
9、css定位
driver.find_element_by_css_selector('#kw').send_keys('NBA') # id选择器
driver.find_element_by_css_selector('.s_ipt').send_keys('乔丹') # class选择器
driver.find_element_by_css_selector('[id=kw]').send_keys('科比')
driver.find_element_by_css_selector('[class=s_ipt]').send_keys('皮蓬')
driver.find_element_by_css_selector('[name=wd]').send_keys('詹姆斯')
driver.find_element_by_css_selector('[id=kw][name=wd]').send_keys('哈登')
driver.find_element_by_css_selector('form>span>input').send_keys('杜兰特') # 上上级
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://192.168.86.128/bbs/forum.php')
driver.maximize_window()
driver.find_element_by_id('ls_username').send_keys('admin')
driver.find_element_by_id('ls_password').send_keys('123456')
driver.find_element_by_class_name('pn').click()
driver.find_element_by_css_selector('.pn').click()
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('file:///C:/Users/%E9%A9%AC%E6%96%87%E5%BC%BA/Desktop/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/upload_file.html')
driver.maximize_window()
elem=driver.find_element_by_id('file')
sleep(3)
elem.send_keys('文件绝对路径')
第二种方法:鼠标移动到设置上面
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/') # 用谷歌浏览器打开百度首页
driver.maximize_window()
# 第一种方法:点击有隐藏框的地方
driver.find_element_by_id('s-usersetting-top').click() #点击设置
sleep(2)
driver.find_element_by_link_text('搜索设置').click() # 点击搜索设置
# 第二种:鼠标移动到设置上边
from selenium.webdriver.common.action_chains import ActionChains
mouse=driver.find_element_by_id('s-usersetting-top') # 定位到位置
sleep(2)
ActionChains(driver).move_to_element(mouse).perform() # 移动到位置然后执行
sleep(2)
driver.find_element_by_link_text('搜索设置').click()
sleep(2)
driver.find_element_by_link_text('保存设置').click()
t=driver.switch_to.alert # 切换到alter弹框上边,变量t表示弹框
print(t.text) # 打印弹框上的文本信息
t.accept() # 点击确认按钮
# 4、selenium三种等待方式
from selenium import webdriver
from time import sleep
# 显示等待需要导入的模块
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By # 导入By类
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/') # 用谷歌浏览器打开百度首页
driver.maximize_window()
# 三种等待方式
sleep(3) #强制等待/线程等待/机械等待
driver.implicitly_wait(5) # 隐式等待
WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By,'kw')))
driver.find_element_by_id('kw').send_keys('NBA')
sleep(5) 线程等待,无论元素是否出现,默认等待5秒
driver.implicitly_wait(5) 隐式等待/智能等待,作用用于全局元素
如果页面元素在5秒钟内加载完成,比如第一秒就加载完成,直接进入下面的操作,如果超过5秒就报错
WebDriverWait 显示等待作用于单个元素
在5秒钟内指定页面元素加载完成则继续往下,每隔0.5秒刷新一次,超过5秒就报错
5、获取元素文本
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/') # 用谷歌浏览器打开百度首页
driver.maximize_window()
# 第一种断言
# 获取百度首页hao123对应元素的文本值
value = driver. find_element_by_xpath('//*[@id="s-top-left"]/a[2]').text
print(value)
if value == 'hao123':
print('断言成功')
else:
print('断言失败')
#第二种断言:
#获取百度首页的title进行断言
title = driver. title
#获取当前页面的title
print(title)
assert title =='百度一下,你就知道'
driver.find_element_by_id('kw').send_keys('NBA')
driver.find_element_by_id('su').click() # 点击百度一下
sleep(2)
driver.refresh() # 刷新页面
sleep(2)
driver.back() # 返回上一个页面
size=driver.get_window_size() # 获取当前窗口大小
print(size)
sleep(2)
driver.quit() # 退出浏览器
|
|