Introduction et installation:
Selenium, en tant qu'outil de test automatisé, est principalement utilisé pour les tests de pages Web. Dans le robot d'exploration Python, nous pouvons utiliser cet outil pour opérer sur des éléments de page Web, tels que le démarrage du navigateur, l'ouverture de la page Web, l'avant et l'arrière, les éléments de positionnement, la saisie au clavier Avec l'opération de clic de souris etc. On peut dire que tant que l'opération peut être effectuée dans le navigateur, nous pouvons utiliser du sélénium pour obtenir
OK. Tout d'abord, nous devons installer le sélénium.
Si Python et pip sont installés sur votre ordinateur, il suffit d'appeler
pip installer le sélénium
Cette commande dessus une
fois l'installation terminée, nous devons tester
from selenium import webdriver
调用FireFox浏览器
broswer=webdriver.Firefox()
打开百度
broswer.get('http://www.baidu.com')
显示百度的源代码
print(broswer.page_source)
De cette façon, nous pouvons ouvrir la page de Baidu via Firefox et afficher le code source de Baidu.
PS: étant donné que la page est ouverte via le navigateur, le code source à ce moment est le code source après le rendu JS.
Si une erreur se produit lorsque le code est en cours d'exécution, le système ne peut pas démarrer Firefox et le code d'erreur est
selenium.common.exceptions.WebDriverException: Message: l'exécutable 'geckodriver' doit être dans PATH.
Raison 1: La version de sélénium est trop basse pour prendre en charge la version correspondante de Firefox; Solution: Téléchargez le dernier sélénium et installez-le (cette raison est généralement peu probable)
Raison 2. Vous utilisez une version de Firefox 47 ou supérieure, vous avez besoin Téléchargez le pilote tiers, geckodriver, puis placez geckodriver.exe dans le même répertoire de python.exe ou ajoutez le répertoire où se trouve geckodriver.exe à la variable d'environnement.
Fonctionnement des éléments
Lorsque l'installation du sélénium est terminée, nous pouvons l'utiliser pour faire fonctionner le site Web
Premièrement, nous savons que les pages sont reliées entre elles par une variété d'éléments, vous devez modifier les pages, nous devons d'abord localiser votre besoin Éléments de page Web modifiés.
Prenons Baidu comme exemple, nous pouvons voir que le champ de recherche de Baidu est un tel élément
input id = "kw" name = "wd" class = "s_ipt" value = "" maxlength = "255" autocomplete = "off"
Ensuite, nous pouvons localiser cet élément, puis actionner la zone de recherche
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
broswer=webdriver.Firefox()
broswer.get('http://www.baidu.com')
通过id定位百度搜索框
searchItem=broswer.find_element_by_id('kw')
等待3秒
time.sleep(3)
向搜索框发送文字:图片
searchItem.send_keys('图片')
点击回车
searchItem.send_keys(Keys.ENTER)
显示当前页面的源代码
print(broswer.page_source)
Exécutez le code, le système ouvrira d'abord un navigateur Firefox, et le navigateur ouvrira automatiquement la page Baidu, attendez trois secondes plus tard, la zone de recherche entrera automatiquement le texte et cliquez sur Enter
Why should
temps de sommeil (3)
Cette opération, car la page Web prend du temps à se charger, nous devons nous assurer que tous les éléments de la page Web sont chargés avant de pouvoir continuer.
Tout à l'heure, nous avons utilisé la touche Entrée pour terminer la recherche, puis nous allons opérer en cliquant sur le bouton de recherche
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
broswer=webdriver.Firefox()
broswer.get('http://www.baidu.com')
通过id定位百度搜索框
searchItem=broswer.find_element_by_id('kw')
通过class定位“百度一下”按钮
searchButton=broswer.find_element_by_class_name('bg s_btn')
等待3秒
time.sleep(3)
向搜索框发送文字:图片
searchItem.send_keys('图片')
点击搜索按钮
searchButton.click()
显示当前页面的源代码
print(broswer.page_source)
Le code ci-dessus avant que le code puisse être atteint et la même opération, mais nous devons terminer la recherche en cliquant sur le bouton de recherche
qui est la page une fois la recherche terminée
En ce qui concerne la méthode de positionnement des éléments de page dans Selenium , vous pouvez vous référer à ce blog
. Huit méthodes courantes de positionnement des éléments Selenium Webdriver
Changement de trame
La page contient souvent beaucoup de framework iframe, de nombreux éléments ont été placés dans le framework
, par exemple, nous devons simuler l'espace QQ de la page de destination
Nous nous connectons en cliquant sur l'avatar QQ connecté. D'abord, j'ai obtenu l'identifiant d'élément de l'avatar comme "img_out_1356306040", puis nous pouvons continuer.
from selenium import webdriver
import time
broswer=webdriver.Firefox()
broswer.get(url='https://i.qq.com')
time.sleep(2)
broswer.find_element_by_id('img_out_1356306040').click()
Lorsque nous exécutons le programme, l'ordinateur aura cette erreur
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="img_out_1356306040"]
Ce code indique qu'aucun élément de ce type avec id = "img_out_1356306040" n'a été trouvé.
Examinons de plus près la composition de cette page
On peut constater que la position de l'avatar de connexion est placée dans un cadre iframe avec id = "login_frame", nous devons donc d'abord localiser ce cadre, puis nous pouvons localiser des éléments spécifiques dans le cadre
from selenium import webdriver
import time
broswer=webdriver.Firefox()
broswer.get(url='https://i.qq.com')
time.sleep(2)
定位到'login_frame'框架
broswer.switch_to.frame('login_frame')
broswer.find_element_by_id('img_out_1356306040').click()
返回至默认框架
broswer.switch_to.default_content()
print(broswer.page_source)
Exécutez le code ci-dessus, nous pouvons nous connecter avec succès à l'espace QQ
Pour résumer:
Ce qui précède est la simple utilisation du sélénium. Nous pouvons utiliser le sélénium pour effectuer diverses opérations sur les pages Web. Je pense que les opérations que le navigateur peut effectuer sont comme si elles pouvaient être effectuées via le sélénium. En bref, c'est un outil très puissant. Grâce au sélénium, nous pouvons encore plus Utiliser le robot d'exploration python pour analyser les données Internet