Как заставить селен взаимодействовать с новыми HTML-элементами новой страницы - PullRequest
1 голос
/ 07 июня 2019

Я хочу нажать на «Загрузить файл в формате CSV», который находится в верхнем правом углу таблицы данных новой страницы, или как я могу скопировать всю таблицу и затем вставить ее в файл с селеном или другим лучшимспособ скачать или скопировать прошлое.Проблема в том, что код работает только с элементами HTML старой страницы, но не с элементами новой страницы.поэтому я также хочу знать, как сделать такой же код селена проснувшимся с новыми элементами HTML новой страницы.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

##chrome_options = webdriver.ChromeOptions()
##chrome_options.add_argument("--disable-infobars")
##driver = webdriver.Chrome(chrome_options=options)

browser = webdriver.Chrome()
browser.get('https://www.nseindia.com/products/content/equities/equities/eq_security.htm')

equity_name = browser.find_element_by_name('symbol')
equity_name.send_keys('YESBANK')

v = browser.find_element_by_css_selector("input#rdDateToDate")
v.click()

date_from = browser.find_element_by_id('fromDate')
date_from.send_keys('01-03-2019')

date_to = browser.find_element_by_id('toDate')
date_to.send_keys('01-05-2019')

get_data = browser.find_element_by_xpath('//*[@id="get"]').click()
get_table = browser.find_element_by_xpath('/html/body/div[2]/div[3]/div[2]/div[1]/div[3]/div/div[3]/table').send_keys(Keys.CONTROL, 'c')

1 Ответ

2 голосов
/ 07 июня 2019

Попробуйте:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Chrome()
browser.get('https://www.nseindia.com/products/content/equities/equities/eq_security.htm')

# insert yesbank string
equity_name = browser.find_element_by_name('symbol')
equity_name.send_keys('YESBANK')

#select radio button
v = browser.find_element_by_css_selector("input#rdDateToDate")
v.click()

#insert from date
date_from = browser.find_element_by_id('fromDate')
date_from.send_keys('01-03-2019')

#insert to date
date_to = browser.find_element_by_id('toDate')
date_to.send_keys('01-05-2019')

# submit form
get_data = browser.find_element_by_xpath('//*[@id="get"]').click()

# wait util load table data and csv file
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "download-data-link")))

#find csv file link parent tag by class name, finding parent tag to child tag because csv file link tag does not contain class name or id.
parentElement = browser.find_element_by_class_name('download-data-link')

# find csv file link by parent tag
link = parentElement.find_elements_by_tag_name("a")

#download csv file
print(link[0].click())

, где "download-data-link" класс тега span и a csv file link which внутри тега span

Данные таблицы отходов:

addначало скрипта:

from bs4 import BeautifulSoup

добавление после WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "download-data-link"))) код строки

soup = BeautifulSoup(browser.page_source, 'lxml')
div = page_soup.find("div", {'class':"tabular-data-historic"})
table = div.find("table").find("tbody")
for tr in table.find_all("tr"):
   for td in tr.find_all("td"):
      print(td.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...