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

2024-05-31 23:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在下面的链接中输入CEP,然后按“calcular”按钮,这个按钮由一个标签给出,也是“button”类型。我想我已经确定mechanize不能完成这项工作,但是甚至selenium也没有做我需要的工作。下面是我的机械化代码。在

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


Tags: debugbrfalsetruehttp链接标签按钮
1条回答
网友
1楼 · 发布于 2024-05-31 23:29:13

使用selenium,您需要清除占位符,然后输入带有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)

运行上述代码将输出:

^{pr2}$

相关问题 更多 >