【问题标题】:I am trying to automate opening charts in Tradingview using Selenium with Python我正在尝试使用 Selenium 和 Python 在 Tradingview 中自动打开图表
【发布时间】:2020-06-15 17:02:54
【问题描述】:
from selenium import webdriver
import time
DRIVER = 'chromedriver'
driver = webdriver.Chrome(DRIVER)
driver.get("https://www.tradingview.com/#signin")
driver.find_element_by_name("username").send_keys("Username")
driver.find_element_by_name("password").send_keys("Password")
driver.find_element_by_xpath("//button[@type='submit']").click()
driver.maximize_window()
driver.find_element_by_link_text('Chart').click()
driver.find_element_by_class_name('input-3lfOzLDc').send_keys('SBIN')
time.sleep(20)
driver.quit()

这里一切正常,但是当我尝试查找需要更改的元素时(发送 SBIN 的元素,我收到此错误

Traceback (most recent call last):
  File "tview.py", line 11, in <module>
    driver.find_element_by_xpath("//input[@class='input-3lfOzLDc']").send_keys('SBIN')
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@class='input-3lfOzLDc']"}

有人可以帮忙吗

【问题讨论】:

  • 当它尝试执行点击图表 urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=64222): Max retries exceeded with url: / session/89e453c4bc48f19f5190d13bcc46bf12/element(由NewConnectionError引起(':无法建立新连接:[Errno 61] Connection refused'))

标签: python selenium tradingview-api


【解决方案1】:

再等一会儿就好了。我也导入了密钥,因为您必须清除该文本框

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
DRIVER = 'chromedriver'
driver = webdriver.Chrome(DRIVER)
driver.get("https://www.tradingview.com/#signin")
driver.find_element_by_name("username").send_keys("sibyl666")
driver.find_element_by_name("password").send_keys("417305628m")
driver.find_element_by_xpath("//button[@type='submit']").click()
driver.maximize_window()
driver.find_element_by_link_text('Chart').click()
time.sleep(5)
driver.find_element_by_class_name('input-3lfOzLDc').send_keys(Keys.CONTROL + "a")
driver.find_element_by_class_name('input-3lfOzLDc').send_keys(Keys.DELETE);
driver.find_element_by_class_name('input-3lfOzLDc').send_keys('SBIN')
time.sleep(20)
driver.quit()

【讨论】:

  • 它没有为我清除文本假设它有 BTC,所以它将 SBIN 添加到它,BTC 没有被清除
  • 我不知道为什么它不起作用,但我现在测试了它并且仍然适用于我,你能复制我所有的代码并粘贴然后再试一次吗?
【解决方案2】:

这可能为时已晚,但这对我有用。基本上,我使用 .clear() 来摆脱之前的值并增加一些等待时间(取决于网站在您的机器上加载的速度)。

ticker = driver.find_element_by_class_name('input-3lfOzLDc')
time.sleep(2)
ticker.clear()
time.sleep(2)
ticker.send_keys('SBIN')
time.sleep(2)
ticker.send_keys(Keys.RETURN)

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    相关资源
    最近更新 更多