我正在尝试使用 Selenium 和 Python 来填写此网站上的输入: https://etherscan.io/address/0x7c40c393dc0f283f318791d746d894ddd3693572#readContract
代码应该打开折叠的标签编号 5 并填写输入,但我收到一个错误:
<块引用>消息:没有这样的元素:无法定位元素: {"method":"xpath","selector":"///*[@id='readHeading5']/a"}
driver.get('https://etherscan.io/address/0x7c40c393dc0f283f318791d746d894ddd3693572#readContract')
time.sleep(5)
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
elem = driver.find_elements_by_xpath("//input[@id='input_5_1']")
if len(elem) == 0:
element = driver.find_element(By.XPATH,"//*[@id='readHeading5']/a")
element.click()
elem = driver.find_elements_by_xpath("//input[@id='input_5_1']")
elem.send_keys('Your Username')
答案 0 :(得分:0)
以下代码似乎可以满足您的需求。这使用
find_element_by_id
排他性地,因为在所有情况下我们的元素
想要有一个唯一的 id 属性。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://etherscan.io/address/0x7c40c393dc0f283f318791d746d894ddd3693572#readContract')
print('waiting for page load')
while True:
iframe = driver.find_element_by_id("readcontractiframe")
if iframe:
break
time.sleep(0.5)
print('page load complete')
driver.switch_to.frame(iframe)
section = driver.find_element_by_id('readHeading5')
if section:
section.click()
input = driver.find_element_by_id('input_5_1')
if input:
input.send_keys('Your Username')
time.sleep(10)
driver.close()