找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
from selenium import webdriver    #从selenium库中导入webdriver包
#创建一个谷歌浏览器的对象  driver就是对象(对象名自定义)
driver = webdriver.Chrome()              #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('hao123').click()      #点击hao123  a标签用link

5、模糊匹配
driver.find_element_by_partial_link_text('ao1').click()    #模糊匹配 点击hao123   a标签也可使用

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标签拿到页面中所有的input标签
print(s,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')
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][name=wd]').send_keys('哈登')
driver.find_element_by_css_selector('form>span>input').send_keys('杜兰特')

二、selenium中的三种等待方式:::
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()

1、sleep(2)  强制等待 线程等待   无论元素是否出现,默认2秒
sleep(2)    #强制等待,eg:等待两秒后执行下一步

2、driver.implicitly_wait(5)  隐式等待::   智能等待,作用于全局元素,如果整个页面所有元素在5秒内加载完成,进行下一步
(比如第一秒就加载完成,就直接进行下一步)如果超过5秒就报错
driver.implicitly_wait(5)

3、WebDriverWait  显式等待:    作用于单个元素,在5秒内指定的页面元素加载完成则继续下一步,
# #每隔0.5秒刷新一次,超过5秒则报错
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
WebDriverWait(driver,5,0.5).until(EC.presence_of_all_elements_located((By.ID,'kw')))

driver.find_element_by_id('kw').send_keys('NBA')

获取元素文本::
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()
# 第一种断言:
value = driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').text
print(value)
if value == '视频':
     print('断言成功')
else:
     print('断言失败')

第二种断言:
title = driver.title
print(title)
assert title == '百度一下,你就知道'

搜索、返回并关闭浏览器
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')
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()   #退出浏览器

切换窗口::
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
#打开第一个窗口
driver.get('https://www.baidu.com/')
sleep(2)
#打开第二个窗口
win = 'window.open("https://www.jd.com/")'
driver.execute_script(win)
driver.find_element_by_id('kw').send_keys('鞋子')       #窗口还未切换完成,会在百度输入框输入鞋子
handle = driver.current_window_handle       #获取当前窗口的句柄
all_handle = driver.window_handles        #获取所有窗口的句柄
第一种方法切换:根据句柄索引
driver.switch_to.window(all_handle[-1])
driver.find_element_by_id('key').send_keys('鞋子')

第二种方法切换:遍历所有窗口句柄,再做判断
for i in all_handle:
     if i !=handle:    #当不等于当前窗口就切换(当前窗口是百度)
         driver.switch_to.window(i)      #切换到京东
         title1 = driver.title
         print(title1)
sleep(2)
driver.find_element_by_id('key').send_keys('鞋子')

下拉框::
from selenium import webdriver
from selenium.webdriver.support.select import Select
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(r'C:\Users\Administrator\Desktop\work\多测师学习\select.html')
elem = driver.find_element_by_id('list')    #定位到下拉框位置
sleep(2)
Select(elem).select_by_index(4)        #通过索引:5间房
Select(elem).select_by_value('6')      #通过value值,6间房
Select(elem).select_by_visible_text('7间房')   #通过文本值,7间房
分享至 : QQ空间
收藏

0 个回复

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