簡體   English   中英

Selenium 按鈕點擊 Python

[英]Selenium button click in Python

用 Python編寫了一個selenium機器人,它將在不同網站上觀看視頻。 我需要它來按下按鈕來播放視頻,但它不起作用。 我使用 Chrome webdriver 並嘗試使用 undetected_chromedriver,但沒有任何改變。

我的網絡驅動程序:

browser = webdriver.Chrome(ChromeDriverManager().install())

或者

browser = undetected_chromedriver.Chrome()

我的代碼是:

sendContinue = browser.find_element(By.XPATH,'/html/body/table/tbody/tr[1]/td/table/tbody/tr[2]/td[2]/a').click()

登錄頁面上有效,但在此處無效。

按鈕元素:

<button class="ytp-large-play-button ytp-button ytp-large-play-button-red-bg" aria-label="Смотреть"><svg height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg></button>

誰能解決這個問題?

這種XPATH不靠譜,可以試試下面的嗎?

sendContinue = browser.find_element(By.XPATH,"//*[@class='.ytp-large-play-button.ytp-button']").click()

題外話,但有時等待按鈕出現會有所幫助,例如:

def wait_click(driver, xpath, delay = 20):
    try:
        myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.XPATH, xpath)))
        myElem.click()
        return myElem
    except TimeoutException:
        print("Loading took too much time!")

您可以通過以下方式調用它:

wait_click(driver, "//*[@class='.ytp-large-play-button.ytp-button.ytp-large-play-button-red-bg']")

要理想地與任何可點擊元素交互,您需要為element_to_be_clickable()引入WebDriverWait並且您可以使用以下任一定位器策略

  • 使用CSS_SELECTOR

     WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.ytp-large-play-button.ytp-button.ytp-large-play-button-red-bg[aria-label='Смотреть'] > svg > path"))).click()
  • 使用XPATH

     WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='ytp-large-play-button ytp-button ytp-large-play-button-red-bg' and @aria-label='Смотреть']"))).click()
  • 注意:您必須添加以下導入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM