我正在尝试在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
按钮。
但是,看起来我的代码不会这样做。
我做错了吗?这个网站是否做了我应该注意的事情并相应地更改了我的代码? 对此的任何帮助都非常感谢。
答案 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)
。