找回密码
 立即注册
  • 便民服务
  • 关注我们
  • 社区新手
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('乔丹')
# 3class 定位
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()      # 点击确认按钮


# 4selenium三种等待方式
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()       # 退出浏览器




分享至 : QQ空间
收藏

0 个回复

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