Maison >interface Web >js tutoriel >Explication détaillée sur l'utilisation du sélénium
*Le sélénium est principalement utilisé pour les tests automatisés et prend en charge plusieurs navigateurs. Il est principalement utilisé dans les robots d'exploration pour résoudre les problèmes de rendu JavaScript.
Simulez le navigateur pour charger la page Web. Lorsque les requêtes et urllib ne peuvent pas obtenir le contenu de la page Web normalement*
1 Déclarez l'objet navigateur
Notez un, le nom du fichier Python Ou. ne nommez pas le nom du package sélénium, ce qui entraînerait l'impossibilité d'importer
from selenium import webdriver
browser = webdriver.Chrome()
2. Visitez la page et obtenez le html de la page Web
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.taobao.com') print(browser.page_source) # browser.page_source是获取网页的全部htmlbrowser.close()
3.
Élément unique
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.taobao.com') input_first = browser.find_element_by_id('q') input_second = browser.find_element_by_css_selector('#q') input_third = browser.find_element_by_xpath('//*[@id="q"]') print(input_first,input_second,input_third) browser.close()
Méthodes de recherche communes
find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector
Vous pouvez également utiliser la méthode générale
from selenium import webdriverfrom selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.taobao.com') input_first = browser.find_element(BY.ID,'q')#第一个参数传入名称,第二个传入具体的参数print(input_first) browser.close()
Éléments multiples, éléments multiples s
input_first = browser.find_elements_by_id('q')
4. Interaction avec les éléments - entrez des mots-clés dans le champ de recherche pour la recherche automatique
from selenium import webdriver import timebrowser = webdriver.Chrome() browser.get('https://www.taobao.com') input = browser.find_element_by_id('q')#找到搜索框input.send_keys('iPhone')#传送入关键词time.sleep(5) input.clear()#清空搜索框input.send_keys('男士内裤') button = browser.find_element_by_class_name('btn-search')#找到搜索按钮button.click()
Plus d'opérations : http://selenium-python. readthedocs.io/api.html #module-selenium.webdriver.remote.webelement#Peut avoir des attributs, des captures d'écran, etc.
5. Actions interactives, piloter le navigateur pour effectuer des actions, simuler le glisser et supprimer des actions et attacher des actions à la chaîne d'actions Exécution en série
from selenium import webdriverfrom selenium.webdriver import ActionChains#引入动作链browser = webdriver.Chrome() url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'browser.get(url) browser.switch_to.frame('iframeResult')#切换到iframeResult框架source = browser.find_element_by_css_selector('#draggable')#找到被拖拽对象target = browser.find_element_by_css_selector('#droppable')#找到目标actions = ActionChains(browser)#声明actions对象actions.drag_and_drop(source, target) actions.perform()#执行动作
Plus d'opérations : http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common .action_chains
6. Exécuter JavaScript
Certaines actions peuvent ne pas fournir d'API, comme la liste déroulante de la barre de progression. À l'heure actuelle, nous pouvons exécuter JavaScript via le code
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.zhihu.com/explore') browser.execute_script('window.scrollTo(0, document.body.scrollHeight)') browser.execute_script('alert("To Bottom")')7. Obtenir des informations sur l'élément
Obtenir les attributs
from selenium import webdriverfrom selenium.webdriver import ActionChains browser = webdriver.Chrome() url = 'https://www.zhihu.com/explore'browser.get(url) logo = browser.find_element_by_id('zh-top-link-logo')#获取网站logoprint(logo) print(logo.get_attribute('class')) browser.close()Obtenir la valeur du texte
from selenium import webdriver browser = webdriver.Chrome() url = 'https://www.zhihu.com/explore'browser.get(url) input = browser.find_element_by_class_name('zu-top-add-question') print(input.text)#input.text文本值browser.close()Obtenir l'identifiant, la position, le nom de l'étiquette, la taille
from selenium import webdriver browser = webdriver.Chrome() url = 'https://www.zhihu.com/explore'browser.get(url) input = browser.find_element_by_class_name('zu-top-add-question') print(input.id)#获取idprint(input.location)#获取位置print(input.tag_name)#获取标签名print(input.size)#获取大小browser.close()
8. Fonctionnement du cadre le cadre est équivalent à une page Web indépendante. Si vous recherchez une sous-catégorie dans le cadre réseau de la catégorie parent, vous devez basculer vers le cadre de la sous-catégorie. Si la sous-catégorie recherche la catégorie parent, vous devez également passer à
from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementException browser = webdriver.Chrome() url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'browser.get(url) browser.switch_to.frame('iframeResult') source = browser.find_element_by_css_selector('#draggable') print(source)try: logo = browser.find_element_by_class_name('logo')except NoSuchElementException: print('NO LOGO') browser.switch_to.parent_frame() logo = browser.find_element_by_class_name('logo') print(logo) print(logo.text)
9 En attente
Attente impliciteLorsque l'attente implicite est utilisée. pour exécuter le test, si WebDriver ne trouve pas l'élément dans le DOM, il continuera à attendre au-delà du temps défini. Ensuite, une exception indiquant que l'élément est introuvable est levée,
En d'autres termes, lorsque l'élément est trouvé. ou l'élément n'apparaît pas immédiatement, l'attente implicite attendra un certain temps avant de chercher dans le DOM. Le temps par défaut est 0
from selenium import webdriver browser = webdriver.Chrome() browser.implicitly_wait(10)#等待十秒加载不出来就会抛出异常,10秒内加载出来正常返回browser.get('https://www.zhihu.com/explore') input = browser.find_element_by_class_name('zu-top-add-question') print(input)Attente explicite
Spécifiez une condition d'attente et une attente maximale. temps. Le programme jugera si la condition est satisfaite dans le temps d'attente. Si elle est satisfaite, elle reviendra. Si elle n'est pas satisfaite, elle continuera à attendre. Si le temps est dépassé, elle lancera une exception.
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC browser = webdriver.Chrome() browser.get('https://www.taobao.com/')wait = WebDriverWait(browser, 10) input = wait.until(EC.presence_of_element_located((By.ID, 'q'))) button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search'))) print(input, button)Détails : http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.support.expected_conditions
title_is 标题是某内容 title_contains 标题包含某内容 presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p') visibility_of_element_located 元素可见,传入定位元组 visibility_of 可见,传入元素对象 presence_of_all_elements_located 所有元素加载出 text_to_be_present_in_element 某个元素文本包含某文字 text_to_be_present_in_element_value 某个元素值包含某文字 frame_to_be_available_and_switch_to_it frame加载并切换 invisibility_of_element_located 元素不可见 element_to_be_clickable 元素可点击 staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新 element_to_be_selected 元素可选择,传元素对象 element_located_to_be_selected 元素可选择,传入定位元组 element_selection_state_to_be 传入元素对象以及状态,相等返回True,否则返回False element_located_selection_state_to_be 传入定位元组以及状态,相等返回True,否则返回False alert_is_present 是否出现Alert11. - Réaliser le mouvement avant et arrière du navigateur pour parcourir différentes pages Web
import timefrom selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.baidu.com/') browser.get('https://www.taobao.com/') browser.get('https://www.python.org/') browser.back()time.sleep(1) browser.forward() browser.close()12 Cookies
La gestion des onglets ajoute un navigateur. fenêtre
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.zhihu.com/explore') print(browser.get_cookies()) browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'}) print(browser.get_cookies()) browser.delete_all_cookies() print(browser.get_cookies())
import timefrom selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.baidu.com') browser.execute_script('window.open()') print(browser.window_handles) browser.switch_to_window(browser.window_handles[1]) browser.get('https://www.taobao.com')time.sleep(1) browser.switch_to_window(browser.window_handles[0]) browser.get('http://www.fishc.com')13. Gestion des exceptions
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.baidu.com') browser.find_element_by_id('hello')from selenium import webdriverfrom selenium.common.exceptions import TimeoutException, NoSuchElementException browser = webdriver.Chrome()try: browser.get('https://www.baidu.com')except TimeoutException: print('Time Out')try: browser.find_element_by_id('hello')except NoSuchElementException: print('No Element')finally: browser.close()Cet article explique l'utilisation du sélénium Pour plus de contenu connexe, veuillez suivre le site Web chinois de php. .
Recommandations associées :
Comment effectuer une conversion 2D via CSS3Explication détaillée des variables et de la portée JavaScriptExplication détaillée des paramètres de la méthode $.ajax()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!