2016-08-16 4 views
1

Я работаю над созданием автоматизированного веб-скребка на Академии Хан, чтобы сделать автономное резервное копирование вопросов с использованием селена и скребка python (позже). В настоящее время я работаю над тем, чтобы заставить его отвечать на вопросы (правильно или неправильно, не имеет значения) для продолжения упражнений. К сожалению, функция .click() selenium фактически не выбирает ответ. Я думаю, что это имеет какое-то отношение к тому, чтобы быть направленным на неправильный объект, но я не могу сказать. В настоящее время он выделяет этот параметр, но не выбирает его.Selenium Clicks, но не выбирает

HTML for a single option (out of 4)

Я сделал некоторый код, чтобы воспроизвести ошибку, и подключил его к тестовой учетной записи для всех ваших потребностей отладки. Благодарю.

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 

# gets us to the SAT Math Exercise page 
driver.get('https://www.khanacademy.org/mission/sat/tasks/5505307403747328') 

# these next lines just automate logging in. Nothing special. 
login = driver.find_element_by_name('identifier') 
login.send_keys('stackflowtest') # look, I made a new account just for you guys 
passw = driver.find_element_by_name('password') 
passw.send_keys('stackoverflow') 
button = driver.find_elements_by_xpath("//*[contains(text(), 'Sign in')]") 
button[1].click() 

driver.implicitly_wait(5) # wait for things to become visible 
radio = driver.find_element_by_class_name('perseus-radio-option') 
radio.click() 
check = driver.find_element_by_xpath("//*[contains(text(), 'Check answer')]") 
check.click() 
+0

Как насчет некоторого кода HTML? – JDelorean

+0

Элемент имеет имя класса «kui-button». Почему бы не использовать только этот код, чтобы найти элемент driver.find_elements_by_classname («kui-button»)] ») –

+0

@JDelorean HTML добавлен – Xeneficus

ответ

0

После проб и ошибок, я обнаружил, что фактический выбор нажатием кнопки может быть достигнуто путем указания на элемент с классом «Описание»

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 

# gets us to the SAT Math Exercise page 
driver.get('https://www.khanacademy.org/mission/sat/tasks/5505307403747328') 

# these next lines just automate logging in. Nothing special. 
login = driver.find_element_by_name('identifier') 
login.send_keys('stackflowtest') # look, I made a new account just for you guys 
passw = driver.find_element_by_name('password') 
passw.send_keys('stackoverflow') 
button = driver.find_elements_by_xpath("//*[contains(text(), 'Sign in')]") 
button[1].click() 

driver.implicitly_wait(5) # wait for things to become visible 
radio = driver.find_element_by_class_name('description') 
radio.click() 
check = driver.find_element_by_xpath("//*[contains(text(), 'Check answer')]") 
check.click() 

Для людей, занимающихся подобными вопросами, я бы рекомендуем щелкнуть по самому краю пространства, которое позволяет вам выбирать и проверять элемент там. Это предотвращает случайное использование одного из самых внутренних тегов.

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