【问题标题】:Python: Selenium send_key not workingPython:Selenium send_key 不起作用
【发布时间】:2016-01-08 02:00:29
【问题描述】:

我正在尝试在 Python 中使用 Selenium,因为我是初学者,所以我无法让 send_key 工作,但很可能它是直截了当的,我错过了一些东西。

这是我迄今为止所做的一个示例:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://semantria.com/demo")
item = driver.find_element_by_id("analyze_url_form")
item.send_keys("http://finance.yahoo.com/news/skystar-bio-pharmaceutical-company-provides-133000048.html")
go_button = driver.find_element_by_id("analyze_url_button")
go_button.click()

思路是在https://semantria.com/demo网站中,有一个空白处可以输入网站链接,然后点击Go按钮。 但是,我的代码似乎没有这样做。

我做错了吗?这个网站是否做了一些我应该注意的事情并相应地更改我的代码? 非常感谢您对此的任何帮助。

【问题讨论】:

    标签: python python-2.7 selenium


    【解决方案1】:

    问题是您将密钥发送到 form 元素,而不是内部的 input 元素。

    另外,您可以在发送 URL 时在末尾添加一个新行,这与您输入 URL 并按下 ENTER 键的结果相同,这会导致表单被提交。为我工作:

    item = driver.find_element_by_css_selector("form#analyze_url_form input[name=link]")
    item.send_keys("http://finance.yahoo.com/news/skystar-bio-pharmaceutical-company-provides-133000048.html" + "\n")
    

    作为奖励,您可以通过以下方式获取情绪值(您必须通过 WebDriverWait 和预期条件让 selenium 知道要等待什么):

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    driver = webdriver.Firefox()
    driver.get("https://semantria.com/demo")
    
    item = driver.find_element_by_css_selector("form#analyze_url_form input[name=link]")
    item.send_keys("http://finance.yahoo.com/news/skystar-bio-pharmaceutical-company-provides-133000048.html" + "\n")
    
    wait = WebDriverWait(driver, 30)
    
    sentiment_value = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "strong.sentiment_score_value")))
    print(sentiment_value.text)
    

    打印positive (+0.230)

    【讨论】:

    • 太棒了,效果很好。现在能告诉我如何查看网页返回的内容吗?
    • 谢谢。网页的全部内容不只是情感值在哪里?
    • @TJ1 如果您需要完整的内容,请在等待完成后(意味着现在已加载结果),获取driver.page_source。希望对您有所帮助。
    • 谢谢 alecxe 是的,这非常有帮助,我真的很感激。
    • 谢谢alecxe。这是新问题:stackoverflow.com/questions/33062149/…
    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多