ホームページ  >  記事  >  ウェブフロントエンド  >  Seleniumの使い方を詳しく解説

Seleniumの使い方を詳しく解説

jacklove
jackloveオリジナル
2018-06-11 17:53:043203ブラウズ

Selenium の使い方の詳しい説明


*Selenium は主に自動テストに使用され、複数のブラウザをサポートしています。主に JavaScript レンダリングの問題を解決するためにクローラーで使用されます。
リクエストと urllib が Web ページのコンテンツを正常に取得できない場合、ブラウザをシミュレートします

注: 1. Python ファイル名またはパッケージ名に selenium という名前を付けないでください。

from selenium import webdriver
webdriver はブラウザのドライバーと見なされます。ここでは例として Chrome を使用する必要があります。ウェブページの html を取得します

browser = webdriver.Chrome()

3 、要素の検索

単一要素

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()
また、一般的な方法
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

複数の要素、複数の要素を使用することもできます

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。要素の相互作用 - 検索ボックスにキーワードを入力します 自動検索を実行します

input_first = browser.find_elements_by_id('q')

その他の操作:​​ http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement#属性、スクリーンショットを含めることができます、など

5. インタラクションアクション、ブラウザーを操作してアクションを実行し、ドラッグアンドドロップアクションをシミュレートし、シリアル実行のためにアクションチェーンにアクションをアタッチします

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

その他の操作:​​ http://selenium-python. readthedocs.io/api.html#module-selenium .webdriver.common.action_chains

6. JavaScript を実行します

進行状況バーのドロップダウンなど、一部のアクションは API を提供していない場合があります。コード

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

7. 要素情報を取得

属性を取得

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")')
テキスト値を取得
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()

ID、位置、タグ名、サイズを取得

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

8. フレーム操作

フレームは独立したWebページに相当します. 親カテゴリのネットワーク フレームでサブカテゴリを検索する場合は、サブカテゴリのフレームに切り替える必要があります。親クラスを見つけたい場合は、サブクラスも最初に切り替える必要があります

待機中
。暗黙的待機を使用してテストを実行すると、WebDriver が DOM 内で要素を見つけられなかった場合、設定された時間を超えると要素が見つからないという例外がスローされます。要素が検索されるか、要素がすぐに表示されない場合、暗黙的な待機は DOM を検索する前に一定時間待機します。

明示的な待機時間

待機条件と最大待機時間を指定します。プログラムは待機時間内に条件が満たされるかどうかを判断し、満たされない場合は待機を続けます

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()
rreee。 : http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.support.expected_conditions


11. 進むと戻る - 異なる Web ページを閲覧するためのブラウザーの進むと戻るを実現します

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)


12. Cookies

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)

ブラウザウィンドウを追加するためのタブ管理

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)

この記事では、Selenium の使用法について説明しています。詳しくは、PHP 中国語 Web サイトをご覧ください。 。

関連する推奨事項:

CSS3を介して2D変換を実行する方法

JavaScriptの変数とスコープの詳細な説明

$.ajax()メソッドのパラメータの詳細な説明

以上がSeleniumの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。