2016-06-24 7 views
0

Я пытаюсь ввести CEP в поле по приведенной ниже ссылке, а затем нажать кнопку «calcular», которая задается тегом, а также типа «кнопка». Я думаю, что я решил, что механизация не справится с этой задачей, но даже селен не делает того, в чем я нуждаюсь. Ниже приведен мой код механизации.«Щелчок» HTML-элемента с тегом кнопки

br = mechanize.Browser() 
br.set_handle_robots(False) 
br.set_handle_refresh(False) 
br.set_all_readonly(False) 
br.set_debug_http(True) 
br.set_debug_responses(True) 
br.addheaders=[('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64)] 
br.open(prod_url) 
print br.title() 
print br.geturl() 
br.select_form(nr=1) 
br['postalCode']='05454-050' 
br.submit() 
print br.geturl() 
sourceCode=BeautifulSoup(br.response().read(),'html.parser') 

http://www.americanas.com.br/produto/113266366/fone-de-ouvido-philips-over-ear-branco-shl3000wt

+0

Открываешь к и петь другие методы? –

+0

@PadraicCunningham Да, спасибо. –

ответ

0

Использование селена, вам необходимо очистить заполнитель затем введите текст с почтовым индексом send_keys, чтобы получить frete цены и т.д .. мы должны ждать, пока этот элемент не виден ::

from selenium.webdriver.common.keys import Keys 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 


def wait(dr, x, t): 
    element = WebDriverWait(dr, t).until(
     EC.presence_of_element_located((By.CSS_SELECTOR, x)) 
    ) 
    return element 

dr = webdriver.Firefox() 
dr.maximize_window() 
dr.get("http://www.americanas.com.br/produto/113266366/fone-de-ouvido-philips-over-ear-branco-shl3000wt") 
inp = dr.find_element_by_id("postalCode") 
inp.clear() 
inp.send_keys("05454050") 
inp.send_keys(Keys.RETURN) 
ele = wait(dr, "table.tbl-freight-template tr td span.freight-value.info-freight", 20) 
print(ele.text) 

Запуск выше код выведет:

R$ 18,45