要素の配置は、処理する要素を見つけることです。一般的な方法は、クリック、ダブルクリック、コンテンツの入力など、
要素に対していくつかの操作を行うことです。要素の配置+一般的な方法=== UIオートメーション
基本的な一般的な方法、特殊要素の配置、フレーム操作、添付ファイルのアップロード操作、Cookie操作、セレンヘルプドキュメント
1.基本的な方法
(1)send_Keys方法:模拟键盘输入
driver.find_element_by_id("kw").send_keys("python")
(2)text方法:获取你定位的文本
driver.find_element_by_link_text("新闻").text
(3)get_attribute();获取元素value属性的值
driver.find_element_by_id("su").get_attribute("value")
(4)maximize_window():浏览器窗口最大化
driver.maximize_window()
(5)current_window_handle:返回窗口句柄,意思就是标识窗口的字符串。
driver.current_window_handle
(6)current_url:获取当前窗口URL,
driver.current_url
(7)is_selected():判断是否被选择,如果多选框是被选中,则true
find_element_by_id("xx").is_selected()
(8)is_enabled():如果元素可用,则true
find_element_by_id("kw").is_enabled()
(9)is_displayed():如果元素在页面显示,则true
find_element_by_id("kw").is_displayed()
(10)clear():清空输入框
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("kw").clear()
(11)quit():关闭浏览器并杀掉chromedriver.exe进程。不开这个,后台会有很多exe进程
(12)title:获取页面“title”,百度首页的title是“百度一下,你就知道”
driver.title
(13)refresh():刷新界面
driver.refresh()
(14)back():浏览器工具栏向后操作,比如:访问百度首页并后退到空页面:
#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.back()
(15)forward():浏览器工具栏向前操作,跟上面的相反,如下又跑到了百度网页
#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.back()
driver.forward()
2.特別な要素の配置
(1)マウスホバリング操作
セレンでは、キーボードとマウスは、主にシングルクリック、ダブルクリック、ドラッグアンドドロップなどを含むアクションチャイナクラスにカプセル化されます。\
click() # 单击
click_and_hold()#单击并且按住不放
double_click()#双击
context_click()#右击
drag_and_drop(source,target)#拖拽
drag_and_drop(source,xoffset,yoffset)#将目标拖拽到目标位置
key_down(value,element=None)#按住某键,实现快捷操作
key_up()#松开某键
move_to_element(to_element)#将鼠标移动到某个元素上
move_to_element_with_offset(to_element,xoffset,yoffset)#移动到指定坐标
perform()#执行前面的一系列actionchains。
release()#释放按下的坐标
参考までに、設定を見つけ、マウスを
置いた後、検索設定を見つけてクリックします
#coding=utf-8
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
bg_config = driver.find_element_by_id("s-usersetting-top")
ActionChains(driver).move_to_element(bg_config).perform()
driver.find_element_by_link_text("搜索设置").click()
driver.quit()
(2)選択操作
select_by_index、select_by_value、select_by_visible_textの3つのタイプがあります。3番目のタイプはより使用され、保守性に優れています。最初のタイプも優れており、2番目のタイプも優れています。私は3番目のタイプの使用に慣れています。 。
#coding=utf-8
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
bg_config = driver.find_element_by_id("s-usersetting-top")
ActionChains(driver).move_to_element(bg_config).perform()
driver.find_element_by_link_text("搜索设置").click()
time.sleep(3)
# 定位到下拉框
se = driver.find_element_by_id('nr')
# 选择元素
Select(se).select_by_visible_text('每页显示20条')
driver.quit()
返品アイテム(オプション)を処理する3つの方法:
# 返回选中的内容
ops = Select(se).all_selected_options
for i in ops:
print(i.text)
# 返回所有的内容
ops = Select(se).options
for i in ops:
print(i.text)
# 返回第一个被选中的选项
ops = Select(se).first_selected_option
for i in ops:
print(i.text)
(3)javascriptを使用してページ要素を操作する
Webdriverは、右側のスクロールバー、
サブテキストなど、一部のブラウザのコントロールを直接サポートしていませんが、jsを使用した間接操作をサポートしています。Webdriverには次の2つのタイプがあります。execute_script
( ):コードを同期的に実行
execute_async_script():コードを非同期に実行します。Baidu
検索ボックスにセレンを入力するには、完全なコードは次のとおりです。
#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
js = 'document.getElementById("kw").value="selenium"'
driver.execute_script(js)
driver.quit()
jsを使用してブラウザのスクロールバーの操作を実現します
#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.set_window_size(800,700)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
js = "window.scrollTo(100,300)"
time.sleep(2)
driver.execute_script(js)
time.sleep(2)
driver.quit()
(4)jQuery操作ページ要素
jqueryはjavascriptクラスライブラリであり、要素配置の強力な補足であり、要素配置の2つの静脈を開きます。詳細についてはjqueryセレクターを参照できますが、xpthが増えたため、絶対パスをコピーできれば、非常に快適です。
#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.set_window_size(800,700)
jq = "$('#kw').val('selenium')"
driver.execute_script(jq)
time.sleep(2)
driver.quit()
(5)一般的に使用されるキーボードイベント
Keys.BACK_SPACE #删除键
Keys.SPACE #空格键
Keys.TAB #TAB键
Keys.BACKSPACE #会推键
Keys.CONTROL,"a" #ctrl+a
Keys.CONTROL,"c" #ctrl+c
Keys.CONTROL,"v" #ctrl+v
Keys.CONTROL,"x" #ctrl+x
Keys.F1 #F1键
Keys.F12 #f12
セレンを入力し、mを削除します
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id('kw').send_keys(Keys.BACKSPACE)
# driver.find_element_by_id("kw").send_keys("selenium"+Keys.BACKSPACE)
driver.quit()
(5)フレーム操作の
フレームタグには、frameset、frame、iframeの3種類があり、Framesetでフレームを切り替える必要はありません。要素を見つけるには、このボックス内でIframeとframeを切り替える必要があります。
図に示すように、例としてQQメールボックスにログインします。
#coding=utf-8
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://mail.qq.com/")
driver.maximize_window()
driver.find_element_by_id('u').send_keys('test')
quit()
エラー:selenium.common.exceptions.NoSuchElementException:メッセージ:そのような要素はありません:要素を見つけることができません:{"method": "cssselector"、 "selector": "[id =" u "]"}
理由:ユーザー名埋め込みセットiFrameフレーム内で要素を見つけ、前回フレームがあったことを確認します。フレームの属性値はid = 'login_frame'です。
#coding=utf-8
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://mail.qq.com/")
driver.maximize_window()
driver.switch_to.frame('login_frame')
driver.find_element_by_id('u').send_keys('test')
quit()
print('test finished')
フレームの外側を見つけたい場合は、ドライブに戻ります。
driver.switch_to.default_content()
フレームを配置するいくつかの方法について話します。
(1)インデックスによる配置:
driver.switch_to.frame(0):0代表第一个frame
(2)name属性から検索します。
driver.switch_to.frame('login_frame')
(3)webelementを介した配置:
driver.switch_to.frame(driver.find_elements_by_id('login_frame'))
(6)添付ファイルをアップロードする場合、
セレン自体はウィンドウウィンドウを認識できません。たとえば、アップロード方法は3つあります。1つ
は
「添付ファイルの追加」を見つける方法です。
driver.find_element_by_name('UploadFile').send_keys('D:\\python\\chengdu.zip')
2番目のタイプ:
サードパーティライブラリpywinautoの助けを借りて、これはインターフェイス操作用のツールライブラリであり、未亡人GUIの処理に特化しており、Windowsでのみ使用できます。
from pywinatuo.applicaton import Application
# 定位到窗口
app = app.connect(title_re="打开",clsaa_name="#32770")
# 设置文件路径
app["打开"]["EDit1"].SetDditText("D:\soft\ip.txt")
time.sleep(2)
# 单击按钮
app["打开"]["Button1"].click()
print("end")
3番目のタイプ:
基本言語によって開発されたウィンドウの自動シミュレーションのためのツールであるautoitで実現されます。すべての標準の未亡人コントロールと対話でき、スクリプトを実行可能プログラムに変換でき、移植が簡単で、グラフィカルインターフェイスを作成でき、Windows API関数を呼び出すことができます。
ここでは紹介しません。2番目の関数に注目してください。
(7)Cookie操作[あまり使用されません。詳細なコンテンツは後で追加され
ます] Seleniumは、Cookieの読み取り、追加、および削除の操作を提供します
add_cookie(name)
delete_all_cookie()
delete_cookie(name)
get_cookie(name):return名前の付いたCookie情報name
get_cookies():現在のセッションのすべてのCookie情報を返します
(8)セレンヘルプドキュメント
いいえ