Heim >Web-Frontend >js-Tutorial >Ausführliche Erklärung zur Verwendung von Selen

Ausführliche Erklärung zur Verwendung von Selen

jacklove
jackloveOriginal
2018-06-11 17:53:043242Durchsuche

Detaillierte Erläuterung der Selenium-Nutzung


*Selenium wird hauptsächlich für automatisierte Tests verwendet und unterstützt mehrere Browser. Es wird hauptsächlich in Crawlern zur Lösung von JavaScript-Rendering-Problemen verwendet.
Simulieren Sie den Browser, um die Webseite zu laden.

1 Deklarieren Sie das Browserobjekt Benennen Sie nicht den Paketnamen Selenium, da dieser nicht importiert werden kann. rrree
Webdriver kann als Treiber des Browsers verwendet werden. Es unterstützt mehrere Browser ist Chrome als Beispiel

from selenium import webdriver

2. Besuchen Sie die Seite und holen Sie sich den Webseiten-HTML

browser = webdriver.Chrome()

3. Finden Sie das Element

Single Element

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source) # browser.page_source是获取网页的全部htmlbrowser.close()

Häufig verwendet Die Suchmethode

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()

kann auch die allgemeine Methode

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

mehrere Elemente, mehrere Elemente s

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()

4 verwenden . Elementinteraktion – Suchfeldeingabe Schlüsselwörter für die automatische Suche kann Attribute und Screenshots haben. Warten

5. Interaktive Aktionen, steuern Sie den Browser, um Aktionen auszuführen, simulieren Sie Drag-and-Drop-Aktionen und hängen Sie Aktionen an die Aktionskette an, um sie seriell auszuführen

input_first = browser.find_elements_by_id('q')

Weitere Operationen: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

JavaScript ausführen

Einige Aktionen werden möglicherweise nicht über die API bereitgestellt, z. B. das Fortschrittsbalken-Dropdown. Zu diesem Zeitpunkt können wir JavaScript über Code ausführen

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()

7. Elementinformationen abrufenAttribute abrufen

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()#执行动作

Textwert abrufen

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")')

ID, Ort, Tag-Name, Größe abrufen

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()

8. Frame-Operation

Frame entspricht einer unabhängigen Webseite Wenn Sie im Netzwerkrahmen der übergeordneten Kategorie nach einer Unterkategorie suchen, müssen Sie zum Rahmen der Unterklasse wechseln. Wenn die Unterklasse nach der übergeordneten Klasse sucht, muss sie auch zu

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()

wechseln. 9. Warten

Implizites Warten

Wenn beim Ausführen des Tests das implizite Warten verwendet wird und WebDriver das Element im DOM nicht findet, wartet es weiter Die Ausnahme des nicht gefundenen Elements wird ausgelöst. Mit anderen Worten, wenn das Element gefunden wird oder nicht sofort angezeigt wird, wird implizit eine Zeit lang gewartet, bevor das DOM durchsucht wird ist 0

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()
Explizites Warten

Geben Sie eine Wartebedingung und eine maximale Wartezeit an. Das Programm ermittelt, ob die Bedingung erfüllt ist. Wenn sie erfüllt ist, wird dies der Fall sein Wird zurückgegeben, wird weiter gewartet. Wenn die Zeit überschritten wird, wird eine Ausnahme ausgelöst.

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)
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)

Details: http://selenium-python.readthedocs.io/api.html# Modul -selenium.webdriver.support.expected_conditions

11. Vorwärts und Zurück – Erkennen Sie die Vorwärts- und Rückwärtsbewegungen des Browsers, um verschiedene Webseiten zu durchsuchen

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)

12. Cookies

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 是否出现Alert
Tab-Verwaltung Browserfenster hinzufügen

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()

13. Ausnahmebehandlung

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())

Dieser Artikel erklärt bitte die Verwendung von Selen Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

So führen Sie eine 2D-Konvertierung über CSS3 durch

Detaillierte Erläuterung der JavaScript-Variablen und des Gültigkeitsbereichs

Detaillierte Erläuterung der Parameter der $.ajax()-Methode

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Verwendung von Selen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn