*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
browser = webdriver.Chrome()
Single Element
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.taobao.com') print(browser.page_source) # browser.page_source是获取网页的全部htmlbrowser.close()
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()
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')
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()#执行动作
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
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 0from 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()
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)
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)
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
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())
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!