2015-04-01 6 views
2

Я хочу, чтобы экземпляр WebDriver отслеживал страницу неограниченно, пока не появится окно ввода с именем «move». Когда появится окно ввода, я хочу заполнить его некоторым текстом и нажать кнопку отправки рядом с формой. Каков самый простой способ сделать это?Selenium with Python - Подождите бесконечно, пока не появится окно ввода

У меня есть что-то вроде этого сейчас:

try: 
    move = WebDriverWait(driver, 1000).until(
     EC.presence_of_element_located((By.NAME, "move")) 
    ) 
finally: 
    wd.quit() 

И кнопка рядом с формой не имеет ни имени, ни идентификатор, поэтому я его размещения на XPATH. Я хочу подождать, пока эта форма не появится, прежде чем нажимать кнопку.

Как это сделать?

ответ

2

монитор страницы на неопределенное время, пока окно ввода появляется

Explicit wait вы использовали в примере требуется значение тайм-аута, определенный. Либо вы устанавливаете очень высокое значение для тайм-аута, либо это не вариант.

В качестве альтернативы, вы можете иметь while True петли, пока элемент не будет найден:

from selenium.common.exceptions import NoSuchElementException 

while True: 
    try: 
     form = driver.find_element_by_name("move") 
     break 
    except NoSuchElementException: 
     continue 

button = form.find_element_by_xpath("following-sibling::button") 
button.click() 

где я предполагаю button элемента является following sibling формы.

+0

Вы абсолютно блестящие. Я получаю следующую ошибку в стратегии кнопок: http://i.imgur.com/Ov9gjOx.png. Есть идеи? И HTML выглядит так: http://i.imgur.com/hUwP8kc.png – Parseltongue

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