2015-11-22 2 views
1

Я пытаюсь загрузить сценарий селена для загрузки изображения из MTURK HIT. Мой скрипт может войти в MTurk, перейти на страницу «принять новую HIT» для HIT, с которой я хочу захватить изображение, но тогда я не могу указать его на конкретное изображение, которое я хочу. Я пробовал все методы, перечисленные в документации selenium (find_element_by_class_name, by_id, by_element) и т. Д., И я не могу это понять.С трудом указывающий Selenium вправо iFrame [python]

То, что я до сих пор:

from selenium import webdriver 
from bs4 import BeautifulSoup 

driver = webdriver.Firefox() 

driver.get("https://www.mturk.com/mturk/myhits") 

elem = driver.find_element_by_id("ap_email") 
elem.send_keys('####') 
elem = driver.find_element_by_id("ap_password") 
elem.send_keys('###') 
elem = driver.find_element_by_id("signInSubmit-input") 
elem.click() 
driver.get("https://www.mturk.com/mturk/previewandaccept?groupId=3ZXRRTK2NDCB5NW5M24C9P2OWG41OF") 
hit = driver.switch_to_frame("ExternalQuestionIFrame") 
print(hit) 

Выход это дает мне:

None 

Выход я бы ожидать: HTML, в пределах ссылки https://backend.ibotta.com/receipt_moderation/50730299/edit?assignmentId=33FBRBDW6OZTOIJ53FZR716JLOQC8N&hitId=3D3B8GE892RAASDPNAMA2D4I3E3P9G&workerId=A1DY4DM16TBFPL&turkSubmitTo=https%3A%2F%2Fwww.mturk.com

элемент I» m, пытающийся достичь, упоминается в источнике страницы как ExternalQuestionIFrame, как показано ниже:

</style><iframe height="1000" scrolling="auto" frameborder="0" align="center" src="https://backend.ibotta.com/receipt_moderation/50730299/edit?assignmentId=33FBRBDW6OZTOIJ53FZR716JLOQC8N&amp;hitId=3D3B8GE892RAASDPNAMA2D4I3E3P9G&amp;workerId=A1DY4DM16TBFPL&amp;turkSubmitTo=https%3A%2F%2Fwww.mturk.com" name="ExternalQuestionIFrame"></iframe> 

Может ли кто-нибудь увидеть, в чем я ошибаюсь? Любые ответы очень ценятся!

ответ

1

Вам не нужно переключаться на iframe, чтобы получить его src. Просто найдите элемент и использовать get_attribute() для получения значения атрибута в src:

frame = driver.find_element_by_name("ExternalQuestionIFrame") 
print(frame.get_attribute("src")) 
+0

Спасибо СТОЛЬКО, alecxe! – n1c9