Ir ao conteúdo

Python Python: Como clickar em botão javascript:void(0) utilizando Selenium


Ir à solução Resolvido por Ryan Dos Santos,

Posts recomendados

Postado

Sou novo em web scraping e estou utilizando o Selenium para abrir o Chrome e clicar em um botão de compra de um site, mas nada acontece quando rodo o código. O que estou fazendo de errado? Qual a forma correta para indicar o botão ao Selenium?

 

Código do botão:

<a href="javascript:void(0)" class="cont-bt-fast buy">
                  <span class="title">Compra</span>
                  <span class="value">28,60</span>
               </a>

 

Selector:

body > div > div > main > section.middle > div.core-section > div.core-content > div.graficos.main-core > div > div.content-operational-tab.tab-content-0.show.market-closed > div.tab-graph > section.popup-docket-area > div > div.cont-left.fast > div.container-inputs > form > div.line.type-fast.not > a.cont-bt-fast.buy

 

XPATH:

/html/body/div/div/main/section[2]/div[6]/div[1]/div[1]/div/div[2]/div[2]/section[2]/div/div[5]/div[2]/form/div[1]/a[1]

 

Meu código:

 

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

url = "página específica que necessita de permissão para acesso"

driver = webdriver.Chrome(executable_path=r'./chromedriver.exe')
driver.get(url)

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='cont-bt-fast buy']"))).click()

 

Mensagem de erro:

 

Traceback (most recent call last):

line 19, in <module>
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='cont-bt-fast buy']"))).click()

selenium.common.exceptions.TimeoutException: Message: 

 

Qualquer informação seria de grande ajuda. Obrigado!

  • Solução
Postado

O botão estava dentro de um iframe, então consegui solucionar o problema identificando o iframe antes do botão.

 

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

url = "specific page that needs permission to access"

driver = webdriver.Chrome(executable_path=r'./chromedriver.exe')
driver.get(url)

iframe = driver.find_element_by_xpath("/html/body/div/div/div/iframe")

driver.switch_to.frame(iframe)

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='cont-bt-fast buy']"))).click()

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!