Webdriver selenium — не удается найти ни одного элемента из TradingView

#python #selenium #selenium-webdriver

#питон #селен #selenium-webdriver

Вопрос:

Я новичок в использовании Selenium, но я просмотрел достаточно видео и прочитал достаточно статей, чтобы понять, что чего-то не хватает. Я пытаюсь получить значения из TradingView, но проблема, с которой я сталкиваюсь, заключается в том, что я просто не могу найти ни один из элементов, ни с помощью Xpath, ни Css. Я пошел дальше и попытался выполнить простой тест элемента видимости, как показано в приведенном ниже коде, и, к моему удивлению, время ожидания истекло.

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
# Stops the UI interface (chrome browser) from popping up
# chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path='c:sechromedriver.exe', options=chrome_options)

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time

driver.get("https://www.tradingview.com/chart/")

timeout = 20
try:
    WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[1]")))
    print("Page loaded")
except TimeoutException:
    print("Timed out waiting for page to load")
driver.quit()
 

Я попытался нажать на одну из кнопок диаграммы, используя следующее, но это тоже не сработало. Я заметил, что, в отличие от многих других веб-сайтов для Tradingview, элементы не имеют имен и не генерируют относительный путь (только полный) с использованием Xpath.

 driver.find.element_by_xpath('/html/body/div[2]/div[5]/div/div[2]/div/div/div/div/div[4]').click()
 

Любая помощь приветствуется!

Комментарии:

1. можете ли вы показать скриншот того, что вы хотите на странице? или HTML-код

Ответ №1:

Я думаю, что должна быть проблема с xpath. Когда я пытаюсь нажать кнопку AAPL, она работает у меня. Xpath, который я использовал, это:

 (//div[contains(text(),'AAPL')])[1]
 

Если вы точно укажете, какой элемент нужно щелкнуть, я попробую.
А также быть знакомым с концепцией фреймов, потому что на сайтах такого типа много фреймов.