2015-09-28 4 views
0

, пожалуйста, кто-нибудь может мне помочь в этом. Он говорит, что моя функция не определена.Функция selenium python не определена?

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("http://www.speedyshare.com/") 

frame_name = driver.find_elements_by_xpath("/html/frameset/frame").get_attribute("name") 

driver.switch_to.frame(frame_name) 

elem = driver.find_element_by_id("selectfilebox") 
elem.click() 

Я получаю этот след.

Traceback (most recent call last): 
    File "/home/ro/selem.py", line 6, in <module> 
    frame_name = driver.find_elements_by_xpath("/html/frameset/frame").get_attribute("name") 
AttributeError: 'list' object has no attribute 'get_attribute' 
>>> 

EDIT:

Когда я бегу

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("http://www.speedyshare.com/") 

driver.switch_to.frame(0) 

elem = driver.find_element_by_id("selectfilebox") 
elem.click() 

И

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("http://www.speedyshare.com/") 

frame_name = driver.find_elements_by_xpath("/html/frameset/frame").get_attribute("name") 

driver.switch_to.frame(frame_name) 

elem = driver.find_element_by_id("selectfilebox") 
elem.click() 

Они оба продолжают работать без каких-либо tracebacks но локотников мыши в адресной строке.

+1

'find_elements_by_xpath' возвращает список. Объекты списка не имеют метода get_attribute. – Kevin

+1

Вы имели в виду 'find_element_by_xpath' (note singular)? – jonrsharpe

+0

нет, я тоже пробовал, но я не получаю трассировку, и мышь просто остается в адресной строке. – booberz

ответ

2

Хотя @Kevin и @jonrsharpe точки совершенно правильно, вы даже не нужна эта строка:

frame_name = driver.find_elements_by_xpath("/html/frameset/frame").get_attribute("name") 

Вы можете просто передать имя фрейма, чтобы переключиться на:

driver.switch_to.frame("frame_name") 

Or , индекс кадра (похоже, что это только первый IFrame на странице):

driver.switch_to.frame(0) 

И селен WebDriver будет взять с имеют расположение кадра и переход на него.

+0

Спасибо, но кадр динамичен, я получил эту линию отсюда. http://stackoverflow.com/questions/17954652/retrieve-dynamic-frame-names-w-selenium-webdriver-and-python – booberz

+0

@booberz okay, вы можете переключиться на него по индексу (см. обновление). Благодарю. – alecxe

+0

@booberz также исправил связанный ответ, спасибо за указание на это. – alecxe

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