import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import pyautogui
titleVideo = input("Enter the title of the video: ")
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs", prefs)
# Add experimental options to remove "Google Chrome is controlled by automated software" notification
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
driver = webdriver.Chrome(r'C:\Users\iwanh\Desktop\Drivers\chromedriver.exe', options=chrome_options)
driver.get("https://www.youtube.com/")
# We use driver.find_element with the help of the By import instead of find_element_by_name or id
accept_all = driver.find_element(By.XPATH, '/html/body/ytd-app/ytd-consent-bump-v2-lightbox/tp-yt-paper-dialog/div['
'4]/div/div[6]/div[1]/ytd-button-renderer['
'2]/a/tp-yt-paper-button/yt-formatted-string')
accept_all.click()
time.sleep(5)
search_box = driver.find_element(By.XPATH, value='/html/body/ytd-app/div[1]/div/ytd-masthead/div[3]/div['
'2]/ytd-searchbox/form/div[1]/div[1]/input')
search_box.send_keys(titleVideo)
searchGo = driver.find_element(By.XPATH, value='/html/body/ytd-app/div[1]/div/ytd-masthead/div[3]/div['
'2]/ytd-searchbox/button/yt-icon')
searchGo.click()
time.sleep(3)
pyautogui.press('tab')
pyautogui.press('tab') # Slopppy way to click on the first recommended
pyautogui.press('enter')# video will fix later
time.sleep(3)
shareButton = driver.find_element(By.XPATH, "/html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[5]/div["
"1]/div/ytd-watch-metadata/div/div[2]/div["
"2]/div/div/ytd-menu-renderer/div[1]/ytd-button-renderer["
"1]/a/yt-icon-button/yt-interaction")
time.sleep(3)
shareButton.click()
time.sleep(2.5)
copyButton = driver.find_element(By.XPATH, value="/html/body/ytd-app/ytd-popup-container/tp-yt-paper-dialog["
"1]/ytd-unified-share-panel-renderer/div["
"2]/yt-third-party-network-section-renderer/div["
"2]/yt-copy-link-renderer/div/yt-button-renderer/a/tp-yt-paper"
"-button/yt-formatted-string")
copyButton.click()
當它執行 shareButton 部分時,它說它是“無法定位元素”。我懷疑的兩件事可能正在發生。
- 我沒有復制正確的 XPATH
- 每次我打開一個新的 chrome 選項卡或每次我重新運行程式時,XPATH 都會發生變化。
輸出:

分享按鈕 我想要它的 XPATH:

PS 我試圖用 XPATH 以外的其他方式找到元素,但結果相同,如果有人設法用另一種方式做到這一點,那就完美了。
uj5u.com熱心網友回復:
你可以點擊按鈕分享給:
driver.find_element(By.XPATH, value='//*[@id="top-level-buttons-computed"]/ytd-button-renderer[1]/a').click()
雖然一個主要問題是元素在第一次進入頁面時沒有加載到頁面上。因此,您必須等待該共享元素加載,您可以使用以下幾種方法:(更簡單的方法)
import time
time.sleep(10) # to wait 10 seconds
或(推薦的方式)
等到頁面用 Selenium WebDriver for Python 加載
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482289.html
上一篇:Selenium-如何檢查“加載更多”按鈕是否可點擊/禁用?
下一篇:用硒從彈出視窗中按下一個按鈕
