你正在使用这个班级名称 elements__StyledListItem-sc-197zmwo-0 QbTKh
其中有空间。
在 Selenium 中,带有空格的类名不会被解析并会抛出错误。
您没有收到错误的原因是您正在使用find_elements
它要么返回一个网络元素列表,要么什么也不返回。
那么如何解决这个问题呢?
删除空格并放置一个.
而是做一个CSS_SELECTOR
尝试这个:
wallet_providers = driver.find_elements(By.CSS_SELECTOR, ".elements__StyledListItem-sc-197zmwo-0.QbTKh") #get the list of wallet providers
老实说,我们可以有比这更好的定位器,因为这些值似乎197zmwo-0.QbTKh
是动态生成的。
我宁愿用这个CSS:
li[class^='elements__StyledListItem'] span[font-weight]
or this xpath:
//li[starts-with(@class,'elements__StyledListItem')]//descendant::span[@font-weight]
另外,您应该像这样打印它:(这是一种方法,但还有其他方法):
Code:
driver.get("https://opensea.io/")
WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="__next"]/div/div[1]/nav/ul/div[2]/li/button'))) #wait for the wallet button to be enabled for clicking
wallet_button = driver.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/nav/ul/div[2]/li/button')
wallet_button.click() #click that wallet button
wallet_providers = driver.find_elements(By.CSS_SELECTOR, "li[class^='elements__StyledListItem'] span[font-weight]") #get the list of wallet providers
for i in wallet_providers:
print(i.get_attribute('innerText'))
控制台输出:
WalletConnect
MetaMask
Coinbase Wallet
Fortmatic
Process finished with exit code 0