找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
from selenium import webdriver      #从selenium中导入webdriver包
#创建一个谷歌浏览器的对象,driver就是对象,可以自定义
driver = webdriver.Chrome()

# 使用谷歌浏览器打开百度首页网址
driver.get('https://www.baidu.com')

driver.maximize_window()    #浏览器窗口最大化
selenium中9大元素定位方法
# 1、id定位
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、link_text定位     精准匹配
driver.find_element_by_link_text('地图').click()

#5、partial_link_text定位       模糊定位
driver.find_element_by_partial_link_text('地').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('乔丹')    #查找标签上上级

# css定位
driver.find_element_by_css_selector('#kw').send_keys('NBA')
driver.find_element_by_css_selector('.s_ipt').send_keys('科比')
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][class=s_ipt]').send_keys('詹姆斯')
driver.find_element_by_css_selector('form>span>input').send_keys('杜兰特')     #逐级查找标签,输入

# 2、通过send_keys上传文件操作
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///C:/Users/Administrator/Desktop/upload_file.html')
driver.maximize_window()
elem = driver.find_element_by_id('file')
sleep(2)
elem.send_keys(r'C:\Users\Administrator\Desktop\bug模板.xlsx')    #上传文件需要选择文件的绝对路径

# 3、定位百度搜索设置隐藏框
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  #切换到alert弹框上面,这个变量t就表示弹框
print(t.text)   #打印alert弹框上面的文本信息
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(5)    #强制等待/线程等待/机械等待
driver.implicitly_wait(5)   #隐式等待
WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
driver.find_element_by_id('kw').send_keys('NBA')

'''
1、sleep(5),线程等待,无论元素是否出现都默认等待5秒
2、driver.implicitly_wait(5)  隐式等待/智能等待,作用于全局元素
如果页面元素在5秒内加载完成,比如第一秒完成加载,则执行下一步指令,如果超过5秒没有加载完成则报错
3、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
# # 定义一个value变量来接收定位
print(value)
if value == 'hao123':   #进行判断并输出
     print('断言成功')
else:
     print('断言失败')

#第二种断言:
#获取百度首页的title进行断言
title = driver.title      #获取当前页面的title  标题
print(title)
assert title=='百度一下,你就知道'

# 6、基础命令获取元素
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('kw').send_keys('nba')    #获取输框id
sleep(2)
driver.find_element_by_id('su').click()         #点击搜素
sleep(2)
driver.refresh()        #刷新指令
sleep(2)
driver.back()           #返回指令
size = driver.get_window_size()    #赋值给到size ,获取尺寸大小
print(size)
sleep(2)
driver.quit()       #关闭网页指令

# 7、打开多窗口进行切换操作
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
win = 'window.open("https://www.taobao.com/")'
driver.execute_script(win)
#打开默认在第一个网站,这里是在百度网站
handle = driver.current_window_handle
all_handle = driver.window_handles
print(handle)
print(all_handle)     #目的是判断当前窗口的句柄处于所有窗口句柄的位置

# title = driver.title    #获取当前窗口的title来判断当前处于那个窗口
# print(title)
#第一种方法切换,根据句柄索引切换
driver.switch_to.window(all_handle[1])
title2 = driver.title
print(title2)
driver.find_element_by_name('q').send_keys('华伦天奴')
driver.find_element_by_class_name('btn-search').click()

第二种方法
for i in all_handle:
     if i !=handle:
         driver.switch_to.window(i)
         title1 = driver.title
         print(title1)

#8、定位到下拉框
from selenium import webdriver
from selenium.webdriver.support.select import Select    #插入下拉款定位模块
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///C:/Users/Administrator/Desktop/select.html')
driver.maximize_window()
elem = driver.find_element_by_id('list')    #定位到下拉框
sleep(2)
Select(elem).select_by_index(4)     #通过索引查找元素,’5间房‘
sleep(2)
Select(elem).select_by_value('6')   #通过value值查找元素’6间房‘
sleep(2)
Select(elem).select_by_visible_text('8间房')  #通过文本查找元素’8间房‘

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册