PythonとSeleniumを使ったテストの一環として、私はセレンを使ってYouTubeリンクを開き、 "AirPlay"ボタンを順番にクリックしたいと考えていますそれをApple TVに送信します。 最初は、要素が隠されているという問題がありましたが、それはActionChainsを使って世話されました。スクリプトは実行されますが、AppleTvの名前が表示されているビデオで再生されているクリックは表示されません。セレンのwebdriverを使ってSafari(mac)の隠れたAirPlayボタン要素をクリックできません
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os , sys
server_url = "http://10.0.10.4:4444/wd/hub"
capabilities = DesiredCapabilities.SAFARI
driver = webdriver.Remote(desired_capabilities=capabilities,
command_executor=server_url)
driver.get("https://www.youtube.com/watch?v=_YhrCp9m14k")
#air_play = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="move_player"]/div[28]/div[2]/div[2]/button[6]')))
air_play = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CLASS_NAME, 'ytp-airplay-button')))
#air_play = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="text"]')))
#air_play = driver.find_element_by_css_selector('button.ytp-ariplay-button')
hover = ActionChains(driver).move_to_element(air_play)
hover.perform()
hover1 = ActionChains(driver).click_and_hold(air_play).perform()
次のようにHTML要素がある:
<button class="ytp-airplay-button ytp-button" title="AirPlay" style=""><svg
height="100%" version="1.1" viewBox="0 0 36 36" width="100%"><use
class="ytp-svg-shadow" NS1:href="#ytp-id-27"></use><path class="ytp-svg-
fill" d="M12,28 L24,28 L18,22 L12,28 Z M27,9 L9,9 C7.9,9 7,9.9 7,11 L7,23
C7,24.1 7.9,25 9,25 L13,25 L13,23 L9,23 L9,11 L27,11 L27,23 L23,23 L23,25
L27,25 C28.1,25 29,24.1 29,23 L29,11 C29,9.9 28.1,9 27,9 L27,9 Z" id="ytp-
id-27"></path></svg></ button>
次のようにXPATHである:
//*[@id="movie_player"]/div[28]/div[2]/div[2]/button[6]
次のようにCSSセレクタがある:以下
コードであります
#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-
right- controls > button.ytp-airplay-button.ytp-button
ボタンがクリックされず、利用可能なAirplayオプションが表示される理由についてお手伝いできますか?
私はAirplayのオプションが表示されません。私はそれが表示されるようにトリガするいくつかのコンポーネントが不足していると仮定しています。あなたの質問を編集し、関連するHTMLを投稿できますか? – JeffC
@ JeffC。私はあなたが必要とする必要な情報を提供したことを願っています。たぶん私は、この要素は、Macの本のSafariブラウザに表示されることを言及する必要があります。私はSafariブラウザをインストールしたWindowsで試したことがありません。 –