如何在 python 中使用 selenium 在 netflix 上定位并单击 "speed test" link?

How to locate and click "speed test" link on netflix using selenium in python?

我是 selenium 的初学者,如果问题很愚蠢(很愚蠢),我深表歉意:) 我需要在 https://www.netflix.com/ 上找到 Speed test link 然后点击它。

我试过按文本和其他一些选项进行搜索。但是好像没什么用,我也不知道为什么。

from selenium import webdriver
from selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.netflix.com/")
driver.implicitly_wait(10)
elem = driver.find_element_by_link_text("Speed test")
elem.click()

NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"link text","selector":"Sign in"} (会话信息:chrome=75.0.3770.142)

使用 WebDriverWaitelement_to_be_clickable 以及以下 xpath。

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

driver = webdriver.Chrome()
driver.get("https://www.netflix.com/")
elem = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//span[@data-uia='data-uia-footer-label'][contains(.,'Speed Test')]")))
elem.click()

浏览器快照:

要添加到此答案,您需要使用 WebDriverWait,然后单击元素 Show more info

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

driver = webdriver.Chrome()
driver.get("https://www.netflix.com/")
elem = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//span[@data-uia='data-uia-footer-label'][contains(.,'Speed Test')]")))
elem.click()
WebDriverWait(driver,60).until(EC.element_to_be_clickable((By.XPATH,"//a[contains(.,'Show more info' )]"))).click()

文本为速度测试的元素不在Viewport so you need to induce WebDriverWait for the desired element to be clickable() and you can use the following 中:

  • 使用XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='footer-link']/span[text()='Speed Test']"))).click()
    
  • 注意:您必须添加以下导入:

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