Python:Selenium send_key不能正常工作

时间:2015-10-10 03:02:18

标签: python python-2.7 selenium

我正在尝试在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按钮。 但是,看起来我的代码不会这样做。

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

1 个答案:

答案 0 :(得分:3)

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

另外,您可以在结尾处使用新行发送与您输入网址相同的新网址,然后按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和预期条件等待的内容):

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)