2015-10-10 3 views
1

Я пытаюсь использовать Selenium в Python, так как я начинаю это делать, я не могу заставить send_key работать, но, скорее всего, это прямолинейно, и я что-то ошибаюсь.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 кнопка. Однако, похоже, что мой код этого не делает.

Я что-то не так? Является ли этот сайт тем, что я должен знать и менять свой код соответственно? Любая помощь по этому поводу очень ценится.

ответ

3

Проблема в том, что вы отправляете ключи к элементу 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 и ожидаемые условия):

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).

+0

Фантастический, он работал красиво. Не могли бы вы рассказать мне, как смотреть контент, который возвращает веб-страница? – TJ1

+0

спасибо. Где все содержимое веб-страницы не просто ценность настроения? – TJ1

+1

@ TJ1, если вам нужен полный контент, сразу после завершения ожидания (что означает, что результаты уже загружены), получите 'driver.page_source'. Надеюсь, это поможет. – alecxe

Смежные вопросы