セレンとパイソンクローラー(4)[マウスの動作(ターゲット3)]

セレンマウスクリック

マウスクリックはに分けることができます

  1. click()をクリックします
  2. ダブルクリックdouble_click()
  3. context_click()を右クリックします
  4. click_and_hold()を離さずにマウスの左ボタンをクリックします
    。ここで、Baiduの例を例として取り上げます。
from selenium import webdriver
from selenium.webdriver.common.by import By

drive=webdriver.Chrome()
drive.get('https://www.baidu.com/')
SubmitBut=drive.find_element(By.XPATH,'//input[@type="submit" and @value="百度一下"]')
SubmitBut.click()

次に、マウスを使用します
1.関連するライブラリをインポートします
2.マウスオブジェクトを作成します
3.関連する操作を実装します
次に、コードを使用してそのような関数を実装します(Baidu検索タブを右クリックします)
ここに写真の説明を挿入

コードは以下のように表示されます

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains#####
drive=webdriver.Chrome()
drive.get('https://www.baidu.com/')
SubmitBut=drive.find_element(By.XPATH,'//input[@type="submit" and @value="百度一下"]')
action_mouse=ActionChains(drive)######
action_mouse.move_to_element(SubmitBut).context_click().perform()######

ここに写真の説明を挿入
終わらせる

マウス動作

drag_and_drop(A、B)AをBにドラッグ

drag_and_drop_by_offset(source、x、y)Aを特定の位置にドラッグします

move_by_offset(x、y)マウスを現在の位置から特定の座標に移動します

move_to_element(to_element)マウスを要素に移動します

move_to_element_with_offset(A、x、y)は、A要素からの距離の位置(左上隅の座標)に移動します

perform()はチェーン内のすべてのアクションを実行します

release(on_element = None)要素の位置でマウスの左ボタンを離します(clic_and_hold()で使用)

send_keys( 'python')キーボードから 'python'を送信して文字を入力し、文字キーの押下をシミュレートします

send_keys_to_element(At、 'python') 'python'をAに送信します

ここにいくつかの例がありますが、他の操作方法は同じです
(例を示すための対応するウェブサイトが見つからないため、疑似コードを使用してデモンストレーションし、後で例を記述します)。

 
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

 
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get('URL')
 
dragger = driver.find_element_by_id('dragger') # 被拖拽元素

A = driver.find_element_by_xpath('') # 目标A
B = driver.find_element_by_xpath('') # 目标B

 
action = ActionChains(driver)
action.drag_and_drop(dragger, A).perform() # 移动dragger到目标A

action.click_and_hold(dragger).release(A).perform() # 效果与上句相同,也能起到移动效果

action.click_and_hold(dragger).move_to_element(A).release().perform() # 效果与上两句相同,也能起到移动的效果

# action.drag_and_drop_by_offset(dragger, 400, 150).perform() # 4.移动到指定坐标
action.click_and_hold(dragger).move_by_offset(400, 150).release().perform() #与上一句相同,移动到指定坐标

頻繁に使用されるアラート

1. drag_and_drag_by_offset(A、x、y)は、通常、スライダーの検証に使用されます。2。move_by_offset(x、y)
の原点座標は、前の移動の終点が次回の原点であるということです。つまり、座標には相加効果があります。

キーボードイベント

これはマウスと組み合わされ、「スペース」キーなどの特定のキーを使用する必要がある場合があります。
key_down(value、element = None)キーボードのキーを押します

key_up(value、element = None)キーを解放します

以下は具体例です。(偽のコード)

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
 
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get('URL')
 
dragger = driver.find_element_by_id('dragger') # 被拖拽元素

A = driver.find_element_by_xpath('') # 目标A
INPUT = driver.find_element_by_xpath('') # 目标B
action = ActionChains(driver)
action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform() # ctrl+a
action.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform() # ctrl+c
action.key_down(Keys.CONTROL,INPUT).send_keys('v').key_up(Keys.CONTROL).perform() # ctrl+v
action.move_to_element(INPUT).key_down(Keys.CONTROL).send_keys('v')key_up(Keys.CONTROL).perform()#和上一个一样  ctrl+v

実際の例

生と死の狙撃兵の着陸の例(真剣に笑わないでください)
座標を取得する方法を示しましょう

ここに写真の説明を挿入
コードは次のように表示されます。

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome()
driver.maximize_window()

enter_url='https://ssjj.4399.com/'
driver.get(enter_url)

actions=ActionChains(driver)

actions.move_by_offset(550,370).click().send_keys('865989840')
actions.move_by_offset(-550,-370)#归位

actions.move_by_offset(550,400).click().send_keys('mima')
actions.move_by_offset(-550,-400)

actions.move_by_offset(530,475).click()
actions.move_by_offset(-530,-475).perform()

actions.move_by_offset(400,350).click().perform()

効果
ここに写真の説明を挿入
(ちなみに署名しました。Chromeは現在フラッシュをサポートしていません。特別な変更がない場合、フラッシュを自動的に実行することはできません。もちろん、変更できます。この建物で説明されていないチュートリアルについては、WeChatパブリックアカウントを検索してください。 )
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/FUTEROX/article/details/108501045