首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“单击”带有按钮标签的HTML元素

“单击”带有按钮标签的HTML元素
EN

Stack Overflow用户
提问于 2016-06-24 21:20:36
回答 1查看 166关注 0票数 0

我正试图在下面链接的字段中输入CEP,然后按下"calcular“按钮,该按钮由一个标签给出,类型也是”button“。我想我已经确定机械化不会完成这项工作,但即使是selenium也没有做我需要它做的事情。下面是我的机械化代码。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2016-06-24 22:25:43

使用selenium时,您需要清除占位符,然后使用send_keys输入邮政编码文本,以获得frete价格等。我们需要等到该元素可见::

代码语言:javascript
复制
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)

运行上面的代码将输出:

代码语言:javascript
复制
R$ 18,45
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38014486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档