目录

  • 1、环境搭建

    • 1.1、安装selenium模块文件
    • 1.2、安装ChromeDriver驱动
    • 1.3、安装GeckoDriver驱动(Firefox浏览器)
  • 2、基本使用方法
    • 2.1、初始化浏览器驱动
    • 2.2、设置浏览器大小
    • 2.3、刷新浏览器页面
    • 2.4、浏览器后退和前进
  • 3、获取页面信息
    • 3.1、页面title
    • 3.2、页面URL
    • 3.3、浏览器版本号
    • 3.4、元素尺寸
    • 3.5、元素的文本
    • 3.6、元素属性值
  • 4、定位页面元素
    • 4.1、ID定位元素
    • 4.2、name定位元素
    • 4.3、class定位元素
    • 4.4、tag_name定位元素
    • 4.5、link_text定位元素
    • 4.6、partial_link_text定位元素
    • 4.7、xpath定位元素
    • 4.8、CSS定位页面元素
    • 4.9、By定位
    • 4.10、定位一组元素
  • 5、页面操作
    • 5.1、输入内容:send_keys()
    • 5.2、点击按钮:click()
    • 5.3、清空输入框:clear()
    • 5.4、模拟'回车'操作:submit()
    • 5.5、单选框选中
    • 5.5、复选框选中
    • 5.6、操作下拉框:Select模块(index)
    • 5.7、多个浏览器窗口切换
  • 6、模拟鼠标操作:ActionChains类
    • 6.1、鼠标右击实例
    • 6.2、鼠标右击:context_click()
    • 6.3、鼠标双击:double_click()
    • 6.4、鼠标拖动:drag_and_drop(source,target)
    • 6.5、鼠标悬停:move_to_element()
  • 7、模拟键盘操作
    • 7.1、常用的键盘操作:
    • 7.2、键盘操作实例
  • 8、设置页面等待加载条件
    • 8.1、显示等待:WebDriverWait()类+ExpectedCondition类

      • 8.1.1、WebDriverWait的具体参数和方法:
      • 8.1.2、设置页面加载判断条件:ExpectedCondition
    • 8.2、隐式等待:implicitly_wait()
    • 8.3、强制等待:sleep()

1、环境搭建

1.1、安装selenium模块文件

pip install selenium

1.2、安装ChromeDriver驱动

【1】下载安装Chrome浏览器。

【2】查看Chrome版本。

  • 点击Chrome菜单“帮助”→“关于Google Chrome”,查看Chrome的版本号。
    【3】下载对应ChromeDriver驱动。
  • 官方网站:https://sites.google.com/a/chromium.org/chromedriver
  • 下载地址:https://chromedriver.storage.googleapis.com/index.html

【4】环境变量配置。

  • 在Windows下,下载完成后,将ChromeDriver的可执行文件chromedriver.exe文件拖到Python的Scripts目录下。

1.3、安装GeckoDriver驱动(Firefox浏览器)

【1】下载GeckoDriver驱动。

  • 在GitHub上找到GeckoDriver的发行版本,然后根据自己的系统和位数选择对应的驱动下载。
  • GitHub:https://github.com/mozilla/geckodriver
  • 下载地址:https://github.com/mozilla/geckodriver/releases

【2】环境变量配置

  • 在Windows下,直接将geckodriver.exe文件拖到Python的Scripts目录下。

2、基本使用方法

2.1、初始化浏览器驱动

# 0、导入模块文件
from selenium import webdriver# 1、初始化浏览器为chrome浏览器
browser = webdriver.Chrome()# 2、初始化浏览器为firefox浏览器
browser = webdriver.Firefox()# 3、初始化浏览器为无界面的chrome浏览器
option = webdriver.ChromeOptions()
option.add_argument("headless")
driver = webdriver.Chrome(chrome_options=option)

2.2、设置浏览器大小

  • maximize_window():设置浏览器大小为全屏
  • set_window_size(500,500):设置浏览器分辨率为:500×500
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.maximize_window()   #设置浏览器大小:全屏
browser.get('https://www.baidu.com')
time.sleep(2)browser.set_window_size(500,500)  # 分辨率 1280*800
time.sleep(2)browser.set_window_size(1024,768)  # 分辨率 1024*768
time.sleep(2)

2.3、刷新浏览器页面

  • refresh()方法:刷新浏览器页面
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.maximize_window()   #设置浏览器大小:全屏
browser.get('https://www.baidu.com')
time.sleep(1)try:browser.refresh()  #刷新页面print('刷新页面')
except Exception as e:print('test fail')#输出内容:刷新页面

2.4、浏览器后退和前进

  • back():后退
  • forward():前进
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.maximize_window()   #设置浏览器大小:全屏
browser.get('https://www.baidu.com')  #点击打开百度新闻页面
browser.find_element_by_link_text('新闻').click()
time.sleep(2)browser.back()  #后退:回到百度首页
time.sleep(2)browser.forward()  #前进:前进到百度新闻页面
time.sleep(2)

3、获取页面信息

3.1、页面title

  • title:获取当前页面的标题显示的字段
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.get('https://www.baidu.com')  #打印网页标题
print(browser.title)
#输出内容:百度一下,你就知道

3.2、页面URL

  • current_url:获取当前页面的URL
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.get('https://www.baidu.com')  #打印网页标题
print(browser.current_url)
#输出内容:https://www.baidu.com/

3.3、浏览器版本号

  • capabilities['version']):打印浏览器version的值
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.get('https://www.baidu.com')  #打印网页标题
print(browser.capabilities['version'])
#输出内容:67.0.3396.87

3.4、元素尺寸

  • size:返回元素的尺寸
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.get('https://www.baidu.com')  #定位输入框
input_box = browser.find_element_by_id('kw')
#打印输入框尺寸
print(input_box.size)
#输出内容:{'height': 22, 'width': 500}

3.5、元素的文本

  • text:返回元素的文本信息
from selenium import webdriver
import time  browser = webdriver.Chrome()
browser.get('https://www.baidu.com')  #定位备案元素
recordcode = browser.find_element_by_id('jgwab')
#打印备案元素信息
print(recordcode.text)
#输出内容:京公网安备11000002000001号

3.6、元素属性值

  • get_attribute('')方法
  • get_attribute('href'):获取href属性值
  • get_attribute('id'):获取id属性值
# coding=utf-8
import time
from selenium import webdriverdriver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://www.baidu.com")
time.sleep(1)for link in driver.find_elements_by_xpath("//*[@href]"):print (link.get_attribute('href'))
driver.quit()

4、定位页面元素

4.1、ID定位元素

from selenium import webdriver
# 设置浏览器
browser = webdriver.Chrome()
#设置浏览器大小:全屏
browser.maximize_window()
#打开百度首页
browser.get('https://www.baidu.com/')
#定位百度搜索输入框之前,先分析下它的html结构
#<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
#发现它的 id="kw" ,接下来我们就通过id进行定位
try:browser.find_element_by_id('kw').send_keys('哈哈')print('test post:id')
except Exception as e:print('test fail')#输出内容:test post:id

4.2、name定位元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
#搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
# 根据name属性定位
try:browser.find_element_by_name('wd').send_keys('哈哈')print('test post:name')
except Exception as e:print('test fail')#输出内容:test post:name

4.3、class定位元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
#搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
# 根据class_name属性定位
try:browser.find_element_by_class_name('s_ipt').send_keys('哈哈')print('test post:class_name')
except Exception as e:print('test fail')#输出内容:test post:class_name

4.4、tag_name定位元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
#搜索框的html结构:<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
# 根据tag_name属性定位
try:browser.find_element_by_tag_name('form')print('test post:tag_name')
except Exception as e:print('test fail')#输出内容:test post:tag_name

4.5、link_text定位元素

  • link_text:根据跳转链接上面的文字来定位元素。
from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
# 根据link_text属性定位元素“新闻”,然后点击按钮
try:browser.find_element_by_link_text('新闻').click()print('test post:tag_name')
except Exception as e:print('test fail')#输出内容:test post:link_text

4.6、partial_link_text定位元素

  • 和link_text定位元素差不多,partial_link_text是通过文字信息中的部分字段来定位元素。
from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
# 根据partial_link_text属性定位元素“新闻”,然后点击按钮
try:browser.find_element_by_partial_link_text('闻').click()print('test post:tag_name')
except Exception as e:print('test fail')#输出内容:test post:partial_link_text

4.7、xpath定位元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
# 根据xpath定位元素
try:browser.find_element_by_xpath('//*[@id="kw"]').send_keys('哈哈')print('test post:xpath')
except Exception as e:print('test fail')#输出内容:test post:xpath

4.8、CSS定位页面元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.maximize_window()#打开百度首页
browser.get('https://www.baidu.com/')
# 根据css_selector定位元素
try:browser.find_element_by_css_selector('#kw').send_keys('哈哈')print('test post:xpath')
except Exception as e:print('test fail')#输出内容:test post:css_selector

4.9、By定位

  • 除了使用上面的方法外,还可以利用find_element()方法,通过By来定位元素。
  • 使用之前需要导入By类:
#导入By类
from selenium.webdriver.common.by import By
  • 那么上面的方法还可以改写为:
browser.find_element(By.ID,'kw')
browser.find_element(By.NAME,'wd')
browser.find_element(By.CLASS_NAME,'s_ipt')
browser.find_element(By.TAG_NAME,'form')
browser.find_element(By.LINK_TEXT,'新闻')
browser.find_element(By.PARTIAL_LINK_TEXT,'闻')
browser.find_element(By.XPATH,'//*[@id="kw"]')
browser.find_element(By.CSS_SELECTOR,'#kw')

4.10、定位一组元素

  • 定位一组元素和定位某个元素差不多,唯一区别就是在单词element后面增加了一个s表示复数:
find_elements_by_id('')
find_elements_by_id_by_class_name('')
find_elements_by_tag_name('')
find_elements_by_link_text('')
find_elements_by_partial_link_text('')
find_elements_by_xpath('')
find_elements_by_css_selector('')

5、页面操作

5.1、输入内容:send_keys()

#定位输入框
input_box = browser.find_element_by_id('kw')
#输入内容
input_box.send_keys('关键字')

5.2、点击按钮:click()

#定位搜索按钮
button = browser.find_element_by_id('su')
button.click()

5.3、清空输入框:clear()

#定位输入框
input_box = browser.find_element_by_id('kw')
#清空输入框
input_box.clear()

5.4、模拟'回车'操作:submit()

  • submit():通常应用于提交表单;例如:搜索框输入内容后的回车操作。
from selenium import webdriverbrowser = webdriver.Chrome()
browser.maximize_window()
browser.get('https://www.baidu.com')# 定位输入框
input_box = browser.find_element_by_id('kw')
# 输入关键词
input_box.send_keys('关键字')
# 模拟回车操作
input_box.submit()

5.5、单选框选中

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://news.baidu.com/')
time.sleep(1)try:#定位搜索框下面的新闻全文和新闻标题单选项radio_button = driver.find_elements_by_css_selector(".search-radios>input")# 定位的一组元素后,返回的是一个列表,这里就循环选中对应的选项for i in radio_button:i.click()print ('选中单选框.')
except Exception as e:print ('fail',format(e))

5.5、复选框选中

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://passport.baidu.com/v2/?reg&tt=1529850358050&overseas=undefined&gid=02B2650-6D11-430E-A19D-529F69B9F1CE&tpl=xw&u=http%3A%2F%2Fnews.baidu.com%2F')
time.sleep(1)try:#定位 阅读并接受《百度用户协议》及《百度隐私权保护声明》 的多选框checkbox = driver.find_elements_by_css_selector("#TANGRAM__PSP_3__isAgree")# 定位的一组元素后,返回的是一个列表,这里就循环选中对应的选项for i in checkbox:i.click()print ('选中多选框')
except Exception as e:print ('fail',format(e))

5.6、操作下拉框:Select模块(index)

  • selenium提供了Select模块,可以直接根据属性或索引定位。

【1】导入select方法:

from selenium.webdriver.support.select import Select

【2】Select模块中的定位方法。


'''1、三种选择某一选项项的方法'''select_by_index()           # 通过索引定位;注意:index索引是从“0”开始。
select_by_value()           # 通过value值定位,value标签的属性值。
select_by_visible_text()    # 通过文本值定位,即显示在下拉框的值。'''2、三种返回options信息的方法'''options                     # 返回select元素所有的options
all_selected_options        # 返回select元素中所有已选中的选项
first_selected_options      # 返回select元素中选中的第一个选项                  '''3、四种取消选中项的方法'''deselect_all                # 取消全部的已选择项
deselect_by_index           # 取消已选中的索引项
deselect_by_value           # 取消已选中的value值
deselect_by_visible_text    # 取消已选中的文本值

【3】使用实例

'''这个是我百度首页搜索设置里面的一个下拉框html代码'''
html = '''
<select name="NR" id="nr"><option value="10" selected="">每页显示10条</option><option value="20">每页显示20条</option><option value="50">每页显示50条</option>
</select>
'''# coding=utf-8
from selenium import webdriver
from selenium.webdriver.support.select import Select# 初始化
driver = webdriver.Chrome()
......'''如果我们需要选择:50条,那么可以用下面的三种方法先选中输入框元素,然后在选择对应选项'''
# 根据索引选择
Select(driver.find_element_by_name("NR")).select_by_index("2")
# 根据value值选择
Select(driver.find_element_by_name("NR")).select_by_value("50")
# 根据文本值选择
Select(driver.find_element_by_name("NR")).select_by_visible_text("每页显示50条")driver.quit()

5.7、多个浏览器窗口切换

切换浏览器窗口的时候将会用到的三个方法:

  • current_window_handle:获取当前窗口的句柄。
  • window_handles:返回当前浏览器的所有窗口的句柄。
  • switch_to_window():用于切换到对应的窗口。
from selenium import webdriver
from selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com/")# 获取当前窗口句柄
seacher_windows = driver.current_window_handle# 跳转新页面
driver.find_element_by_xpath('//*[@id="block1_server"]/div[2]/ul/li[1]/div/div[1]/a[3]').click()all_handles = driver.window_handles
#回到首页
for handle in all_handles:if handle != seacher_windows:driver.switch_to.window(seacher_windows)

6、模拟鼠标操作:ActionChains类

【1】使用之前需要引入 ActionChains 类。

from selenium.webdriver.common.action_chains import ActionChains

【2】ActionChains类提供的鼠标常用方法:

  • perform():执行所有 ActionChains 中存储的行为。
  • context_click():右击
  • double_click():双击
  • drag_and_drop():拖到
  • move_to_element():鼠标悬停

6.1、鼠标右击实例

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains  # 引入 ActionChains 类browser = webdriver.Chrome()
browser.get('https://www.baidu.com')  # 定位到要右击的元素
right_click = browser.find_element_by_link_text('新闻')# 对定位到的元素执行鼠标右键操作
#ActionChains(driver):调用ActionChains()类,并将浏览器驱动browser作为参数传入
#context_click(right_click):模拟鼠标双击,需要传入指定元素定位作为参数
#perform():执行ActionChains()中储存的所有操作,可以看做是执行之前一系列的操作
try:ActionChains(browser).context_click(right_click).perform()print('成功右击')
except Exception as e:print('fail')
#输出内容:成功双击

注意:

  • ActionChains(driver):调用ActionChains()类,并将浏览器驱动browser作为参数传入
  • context_click(right_click):模拟鼠标双击,需要传入指定元素定位作为参数
  • perform():执行ActionChains()中储存的所有操作,可以看做是执行之前一系列的操作

6.2、鼠标右击:context_click()

#   鼠标右击
# 定位到要右击的元素
right_click  = browser.find_element_by_id("xx")# 对定位到的元素执行右击操作
ActionChains(browser).move_to_element(right_click ).perform()

6.3、鼠标双击:double_click()

# 定位到要右击的元素
double_click = browser.find_element_by_id('xx')# 对定位到的元素执行鼠标右键操作
ActionChains(browser).context_click(double_click).perform()

6.4、鼠标拖动:drag_and_drop(source,target)

  • source:开始位置;需要拖动的元素
  • target:结束位置;拖到后需要放置的目的地元素
# 开始位置:定位到元素的原位置
source = driver.find_element_by_id("xx")# 结束位置:定位到元素要移动到的目标位置
target = driver.find_element_by_id("xx")# 执行元素的拖放操作
ActionChains(driver).drag_and_drop(source,target).perform()

6.5、鼠标悬停:move_to_element()

# 定位到要悬停的元素
move = driver.find_element_by_id("xx")# 对定位到的元素执行悬停操作
ActionChains(driver).move_to_element(move).perform()

7、模拟键盘操作

  • selenium中的Keys()类提供了大部分的键盘操作方法;通过send_keys()方法来模拟键盘上的按键。

【1】导入键盘类 Keys()

from selenium.webdriver.common.keys import Keys

7.1、常用的键盘操作:

  • send_keys(Keys.BACK_SPACE):删除键(BackSpace)
  • send_keys(Keys.SPACE):空格键(Space)
  • send_keys(Keys.TAB):制表键(TAB)
  • send_keys(Keys.ESCAPE):回退键(ESCAPE)
  • send_keys(Keys.ENTER):回车键(ENTER)
  • send_keys(Keys.CONTRL,'a'):全选(Ctrl+A)
  • send_keys(Keys.CONTRL,'c'):复制(Ctrl+C)
  • send_keys(Keys.CONTRL,'x'):剪切(Ctrl+X)
  • send_keys(Keys.CONTRL,'v'):粘贴(Ctrl+V)
  • send_keys(Keys.F1):键盘F1
  • .....
  • send_keys(Keys.F12):键盘F12

7.2、键盘操作实例

from selenium import webdriver
from selenium.webdriver.common.keys import Keys  driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
#输入关键词内容
driver.find_element_by_id("kw").send_keys("selenium")
#删除键
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
#空格键
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
#输入内容
driver.find_element_by_id("kw").send_keys("教程")
#全选(Ctrl+A)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
#剪切(Ctrl+X)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
#粘贴(Ctrl+V)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')
#回车键
driver.find_element_by_id("kw").send_keys(Keys.ENTER)  

8、设置页面等待加载条件

[toc]

如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候,就需要我们通过设置一个等待条件,等待页面元素加载完成,避免出现因为元素未加载导致的错误的出现。

WebDriver提供了两种等待类型:显示等待、隐式等待。

8.1、显示等待:WebDriverWait()类+ExpectedCondition类

  • 显示等待:设置一个等待时间和一个条件,在规定时间内,每隔一段时间查看下条件是否成立,如果成立那么程序就继续执行,否则就提示一个超时异常(TimeoutException)。
  • 通常情况下WebDriverWait类会结合ExpectedCondition类一起使用。

【实例】

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 设置浏览器:driver  等待时间:20s
wait = WebDriverWait(driver, 20)
# 设置判断条件:等待id='kw'的元素加载完成
input_box = wait.until(EC.presence_of_element_located((By.ID, 'kw')))
# 在关键词输入:关键词
input_box.send_keys('关键词')

8.1.1、WebDriverWait的具体参数和方法:

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)driver: 浏览器驱动timeout: 超时时间,等待的最长时间(同时要考虑隐性等待时间)poll_frequency: 每次检测的间隔时间,默认是0.5秒ignored_exceptions:超时后的异常信息,默认情况下抛出NoSuchElementException异常until(method,message='')method: 在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是Falsemessage: 如果超时,抛出TimeoutException,将message传入异常until_not(method,message='')until_not 与until相反,until是当某元素出现或什么条件成立则继续执行,until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。methodmessage

8.1.2、设置页面加载判断条件:ExpectedCondition

  • ExpectedCondition中可使用的判断条件:
from selenium.webdriver.support import expected_conditions as EC# 判断标题是否和预期的一致
title_is
# 判断标题中是否包含预期的字符串
title_contains# 判断指定元素是否加载出来
presence_of_element_located
# 判断所有元素是否加载完成
presence_of_all_elements_located# 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0,传入参数是元组类型的locator
visibility_of_element_located
# 判断元素是否可见,传入参数是定位后的元素WebElement
visibility_of
# 判断某个元素是否不可见,或是否不存在于DOM树
invisibility_of_element_located# 判断元素的 text 是否包含预期字符串
text_to_be_present_in_element
# 判断元素的 value 是否包含预期字符串
text_to_be_present_in_element_value#判断frame是否可切入,可传入locator元组或者直接传入定位方式:id、name、index或WebElement
frame_to_be_available_and_switch_to_it#判断是否有alert出现
alert_is_present#判断元素是否可点击
element_to_be_clickable# 判断元素是否被选中,一般用在下拉列表,传入WebElement对象
element_to_be_selected
# 判断元素是否被选中
element_located_to_be_selected
# 判断元素的选中状态是否和预期一致,传入参数:定位后的元素,相等返回True,否则返回False
element_selection_state_to_be
# 判断元素的选中状态是否和预期一致,传入参数:元素的定位,相等返回True,否则返回False
element_located_selection_state_to_be#判断一个元素是否仍在DOM中,传入WebElement对象,可以判断页面是否刷新了
staleness_of

【调用方法如下】

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)

8.2、隐式等待:implicitly_wait()

  • implicitly_wait(xx):设置等待时间为xx秒,等待元素加载完成,如果到了时间元素没有加载出,就抛出一个NoSuchElementException的错误。
  • 注意:隐性等待对整个driver的周期都起作用,所以只要设置一次即可。
from selenium import webdriverdriver = webdriver.Chrome()
driver.implicitly_wait(30)  # 隐性等待,最长等30秒driver.get('https://www.baidu.com')print(driver.current_url)
print(driver.title)

8.3、强制等待:sleep()

  • 强制等待:不管浏览器元素是否加载完成,程序都得等待3秒,3秒一到,继续执行下面的代码。
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get('https://www.baidu.com')sleep(3)  # 强制等待3秒再执行下一步print(driver.title)

转载于:https://www.cnblogs.com/jasontang369/p/9616208.html

Python+Selenium自动化学习笔记相关推荐

  1. Python+Selenium自动化学习笔记一

    1.打开浏览器 # 自动化初体验 打开Chrome浏览器,打开淘宝首页 from selenium import webdriver #安装浏览器驱动url = 'https://www.taobao ...

  2. Python+selenium自动化学习笔记(一)

    第一个testcase涉及到的知识内容: """这里学习内容: 如何唤起浏览器 打开指定网址 刷新页面的方法refresh() 查找指定的元素 模拟键盘输入文本并进行回车 ...

  3. python接口自动化学习笔记(封装获取测试数据方法)

    本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...

  4. PYTHON SELENIUM的学习笔记

    1 trg = driver.find_element_by_xpath('//*[@id="jb"]/div[2]') 上句中的XPATH语句是从chrome的F12中直接右键目 ...

  5. python+selenium个人学习笔记10-调用JavaScript和截图

    调用JavaScript和截图 一.调用JavaScript 1.调整浏览器滚动条位置 window.scrollTo(0,500); #左边距,上边距 2.用execute_script()执行Ja ...

  6. python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)

    本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...

  7. python 网络接口 开发_Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志...

    1.接口开发(flask模块) Python自动化学习笔记(七)接口开发部分的内容补充 1.1参数为json格式: flask.request.is_json #判断参数是否是json格式 flask ...

  8. Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志...

    1.接口开发(flask模块) Python自动化学习笔记(七)接口开发部分的内容补充 1.1参数为json格式: flask.request.is_json #判断参数是否是json格式 flask ...

  9. chrome 控制台信息获取 python_【python+selenium自动化】设置Chrome启动参数

    起因:直接用selenium的webdriver启动chrome,会弹出"Chrome正在受到自动软件的控制",并且窗口较小,是因为chrome没有加载任何配置 解决:点进sele ...

  10. 无敌python爬虫教程学习笔记(一)

    python爬虫系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 本文目录 ...

最新文章

  1. Red Hat Enterprise Linux Server release 6.3下ganglia监控系统的搭建
  2. 【Python】如何用Python实现Word文档拆分
  3. 牛红红的日记(平平无奇拿下域控)
  4. xorg.conf变更导致开机无法显示
  5. 高段位产品经理必须掌握的商业模式分析该怎么做?
  6. Java 网络实例一(获取指定主机的IP地址、查看端口是否已使用、获取本机ip地址及主机名、获取远程文件大小)
  7. java爬虫代码示例_那些让你代码思维和能力有较大的提升Java源码
  8. c语言二维数组错误语法,关于c语言动态分配二维数组free的错误求dalao看看怎么回事谢谢啊~~~~...
  9. 105 基于socketserver实现并发的socket编程
  10. java 回调函数的写法
  11. OBS 录制的视频声音越来越大
  12. 越狱开发笔记(三)——非越狱App砸壳
  13. 电脑正下方显示桌面和计算机,电脑桌面下方的显示栏怎么设置
  14. Matlab画图,坐标轴范围设置和间隔设置
  15. map取固定key_Map获取key值
  16. TIDB集群搭建-流水线
  17. 程序员养生之道:Google 是如何鼓励员工多吃蔬菜的?
  18. 北京卓镭激光完成近亿元B轮融资,君联资本领投...
  19. A* 第k短路详解 (详尽)
  20. 个人博客选什么域名?

热门文章

  1. 那些月入5000的人,凭什么比你更早买房买车?
  2. flask加载配置文件的三种方法
  3. (原)数据结构之树状数组详解
  4. 在 windows 上安装免安装版的mysql
  5. 父子进程共享内存通信的三种方法
  6. Oracle-Linux安装配置python3.6环境
  7. USB设备驱动理解(wds)
  8. Unity3DGUI:刚体碰撞及消息传递
  9. C# decimal保留指定的小数位数,不四舍五入
  10. 全局变量的使用和声明