提问者:小点点

如何在python中使用selenium定位并点击netfi上的“速度测试”链接?


我是一个完整的硒初学者,对不起,如果这个问题是愚蠢的(它是愚蠢的):)我需要在https://www.netflix.com/上找到速度测试链接,然后点击它。

我尝试过通过文本和其他一些选项进行搜索。但是似乎没有什么用,我不知道为什么。

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)


共2个答案

匿名用户

带有文本作为速度测试的元素不在视口中,因此您需要诱导WebDriver等所需的元素为clickable(),并且您可以使用以下定位器策略:

>

  • 使用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
    

  • 匿名用户

    使用WebDriver等element_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()
    

    浏览器快照:

    要添加到此答案,您需要使用WebDriver等,然后单击元素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()