
uj5u.com熱心網友回復:
這里有2個問題:
- 您必須在訪問該元素之前添加等待/延遲。
這最好通過預期條件顯式等待來完成。 - 您使用了錯誤的定位器。
這應該會更好:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'http://www.tradingview.com/screener'
driver = webdriver.Firefox()
wait = WebDriverWait(driver, 20)
driver.get(url)
wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@data-set='income_statement']"))).click()
uj5u.com熱心網友回復:
您的 xpath 未在 HTMLDOM 中找到正確的元素。
所以而不是這個:
//input[@name='Income Statement']
用這個:
//div[@data-set='income_statement']
或者
像這樣的CSS:
div[data-set = 'income_statement']
解釋:
看到這是一個outerHTML:
<div class="tv-screener-toolbar__favorites-item js-favorite-item" data-set="income_statement">
Income Statement
</div>
我們可以看到它是一個div tag,所以我們正在使用//div它,它也有data-set屬性income_statement,當你撰寫 XPath 時,它能夠以1/1唯一性定位正確的節點。
此外,最好使用ExplicitWait:
wait = WebDriverWait(driver, 30)
try:
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@data-set='income_statement']"))).click()
print('Clicked on the button')
except:
print('Could not click ')
pass
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412205.html
標籤:
