I want to type 0.5 into the "mintMultiple: Input". I have tried finding element by Xpath using this code:
import numpy as np
import pandas as pd
from bs4 import BeautifulSoup as soup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome(executable_path=r'C:\Users\Main\Documents\Work\Projects\Scraping Websites\extra\chromedriver')
my_url = "https://etherscan.io/address/0x6eed5b7ec85a802428f7a951d6cc1523181c776a#writeContract"
driver.get(my_url)
time.sleep(2)
your_input = driver.find_element_by_xpath(r'//input[@id="input_payable_3_mintMultiple"]')
However, I get this Error, I've tried using a delay and not using a delay as suggested by other sources, but I get the same error.
NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@id="input_payable_3_mintMultiple"]"}
(Session info: chrome=96.0.4664.45)
This shows the Xpath is correct as it highlighted in yellow in the HTML.
CodePudding user response:
CodePudding user response:
This is because the input is hidden within the drop-down tab and does not show up under the HTML. In order for the element to be interactable, you must first click on the drop down tab. Add the following line of code before "your_input" variable:
driver.find_element_by_xpath("//*[@id='heading3']/a").click() #dropdown tab
Furthermore to complete the code:
your_input.click()
your_input.send_keys("0.5")