在雅虎金融上使用硒按下按钮不起作用

Press button using selenium on yahoo finance doesn't work

我想获取当天的热门股票,所以我转到 https://finance.yahoo.com/gainers,但我想通过按“编辑”来编辑过滤器。

driver = webdriver.Chrome()
driver.get("https://finance.yahoo.com/gainers")
element = driver.find_element_by_class_name("Bgc($linkColor).Bgc($linkActiveColor):h.C(white).Fw(500).Px(20px).Py(9px).Bdrs(3px).Bd(0).Fz(s).D(ib).Whs(nw).Miw(110px)")
element.click()

这行不通。我该如何解决?

下面的 java 代码似乎有效。

        WebDriver driver = new ChromeDriver();
        driver.get("https://finance.yahoo.com/gainers");
        driver.manage().window().maximize();
        WebDriverWait wait = new WebDriverWait(driver, 30);
        WebElement editButton = wait
                .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[data-reactid=\"23\"]")));
        editButton.click();

更清洁的定位器

        WebElement editButton = wait
.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button/span[contains(text(),'Edit')]")));

要单击元素 编辑,您可以使用以下任一方法 :

  • 使用xpath:

    driver.get("https://finance.yahoo.com/gainers")
    driver.find_element_by_xpath("//span[text()='Edit']").click()
    

理想情况下,要单击需要为 element_to_be_clickable() 引入 WebDriverWait 的元素,您可以使用以下任一方法 :

  • 使用XPATH:

    driver.get("https://finance.yahoo.com/gainers")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Edit']"))).click()
    
  • 注意:您必须添加以下导入:

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