Pythonの-WEBの自動化 - スタンバイモードの3種類

未満である場合、このような場合、ドロップダウンボックスなどの場合ではない、他のポップアップの位置位置決め要素;
問題の一般的に二種類:フレームと1、2、待ち時間なしプラス


学習スタンバイモードは以下の3種類:

スリープ(XX)を待つことを余儀なく1.
この方法はシンプルで、粗であるにかかわらず、ブラウザがロードされているかどうかの、プログラムは時間にxxを所定の時間を待つ必要があり、我々は以下のコードを実装し続けなければなりません。
常に待機がこのように推奨されません、それは真剣に、プログラムの実行速度に影響を与えます。

1
2
3
4
5
6
7
8
# -*- coding:utf-8 -*-
from  selenium  import  webdriver
from  time  import  sleep
driver  =  webdriver.Chrome()
driver.get( 'https://www.baidu.com/' )
sleep( 3 ) #强制性等待3s再执行以下代码
print (driver.current_url)
driver.quit() #退出驱动,关闭所有窗口

  

2.劣性待機implicitly_wait(XX)
このアプローチのは、そうでなければ、それは次のステップの前に期限を待っている、ページが完成ローディング指定された時間内にすべての要素は、次のステップを有する場合、最大待機時間を設定することです。いくつかのよりインテリジェントに必須の待機
ドライバ全体のすべての作業のための期間を待って隠され、これだけ一度に設定

1
2
3
4
5
6
7
# -*- coding:utf-8 -*-
from  selenium  import  webdriver
driver  =  webdriver.Chrome()
driver.get( 'https://www.baidu.com/' )
driver.implicitly_wait( 30 ) #隐性等待,最长30s
print (driver.current_url)
driver.quit()

  

3.支配的な待機WebDriverWait
クラスまで()WebDriverWaitフィット感と待っている柔軟な条件に基づいてuntil_not()メソッド、
プログラムは1ごとのXX秒を見るために、条件が真であれば、それはセットを超えるまで、そして、そうでない場合は次のステップは、待ち続けます最長時間は、その後、TimeoutExceptionをスローします。

使用前にA.、関連するライブラリへの最初の参照

B.式の要素の位置を決定します

C.使用expected_conditions対応決意条件が生成されます

(EC.visibility_of_element_located((By.ID、ele_locator))).until WebDriverWait(ドライバ、10,1)
.until WebDriverWait(ドライバ、10,1)(EC.visibility_of_element_located((By.XPATH、ele_locator)))

 

全長クラスを設定待っD. WebDriverWait呼び出し、ポーリング期間

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- coding:utf-8 -*-
#A. 使用前,先引用相关库
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  By
 
driver  =  webdriver.Chrome() #打开Chrome浏览器
driver.get( 'https://www.baidu.com/' ) #打开百度
driver.find_element_by_xpath( '//div[@id="u1"]//a[@name="tj_login"]' ).click() #点击【登录】;click() 方法,可模拟在按钮上的一次鼠标单击。
# B. 确定元素的定位表达式
ele_locator  =  "TANGRAM__PSP_10__footerULoginBtn" #通过id,确定‘用户名登录’元素
 
# C.  使用expected_conditions对应的方法来生成判断条件
# EC.方法名(定位方式,定位表达式)
# EC.visibility_of_element_located(By.ID,ele_locator)#元素可见
 
# D.  调用WebDriverWait类设置等待总时长、轮询周期
# WebDriverWait(driver, 超时时长, 调用频率(默认0.5s)).until(可执行方法, 超时时返回的信息)
# 等待10秒钟,每隔1秒去查看对应的元素是否可见;如果可见,继续下一步操作;如果不可见,则继续等待,直到10s结束,如果元素还是不可见,则抛出超时异常
WebDriverWait(driver, 10 , 1 ).until(EC.visibility_of_element_located((By. ID ,ele_locator)))
1
2
3
driver.find_element_by_id( 'TANGRAM__PSP_10__footerULoginBtn' ).click() #点击【用户名登录】
 
driver.close() #关闭当前窗口

おすすめ

転載: www.cnblogs.com/6J2B2/p/12145660.html