Селен - исключение «Нет такого элемента».

Я пытаюсь найти элемент кнопки (кнопки «Загрузить» или «Сохранить выбранные коды серий») на веб-странице, но я не могу сделать это каким-либо другим способом. Веб-страница не имеет iFrame, явный метод ожидания не работает, и на самом деле, что еще хуже, когда я перебираю все классы веб-страницы, элемент не отображается, в то время как некоторые элементы, которые не отображаются в «проверять элементы» хрома, делать.

x = browser.find_elements_by_xpath('//*[@class]')
for y in x:
    print(y.get_attribute('class'))

Кроме того, еще одна неожиданная проблема заключается в следующем:

Элемент <div class="contentsInner"> , который имеет следующие три дочерних элемента:

<div class="frameDecorationPlane clearfix">
<div class="abstractResultArea">
<div class="contentsBorder">

Может быть расположен с помощью селектора xpath или css, но за исключением первого дочернего элемента, оставшиеся два вызывают ошибку отсутствия такого элемента.

Я включил скриншот веб-страницы, на которую я ссылаюсь ниже, для справки.

Скриншот страницы сайта "Результат поиска".

Наконец, я включил ниже код, который я использовал, чтобы попасть на страницу веб-сайта, которая вызывает ошибку. Чтобы повторить ошибку, вы можете использовать следующую ссылку , просто выбрать любой случайный элемент и любой диапазон выходного года и просто нажать кнопку «Поиск». Вам не обязательно выбирать именно те данные, которые я выбрал для экспорта.

# We open a browser window.
browser = webdriver.Chrome(executable_path='/Users/George/chromedriver_80', chrome_options=chromeOptions)

# We load the website's query:
browser.get('http://www.stat-search.boj.or.jp/ssi/cgi-bin/famecgi2?cgi=$nme_a000_en&lstSelection=PR01')

# Finds and clicks the Corporate Goods Price Index (2015 base) element.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.selectMenuItem > table > tbody > tr.selectedMenu > td.menuNameCell')
element.click()

# Finds and clicks the next button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.resultCountPanel.clearfix > input')
element.click()

# Finds and clicks the Producer Price Index element.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.selectMenuItem > table > tbody > tr.selectedMenu > td.menuNameCell')
element.click()

# Finds and clicks the next button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.resultCountPanel.clearfix > input')
element.click()

# Finds and clicks the All commodities element.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.selectMenuItem > table > tbody > tr.selectedMenu > td.menuNameCell')
element.click()

# Finds and clicks the next button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.resultCountPanel.clearfix > input')
element.click()

# Finds and ticks the PR01'PRCG15_2200000000 PPI indicator element.
element = browser.find_element_by_css_selector('#menuSearchDataCodeList > tbody > tr:nth-child(1) > td > label')
element.click()

# Finds and clicks the add to search condition button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.leafMenu > div:nth-child(6) > a')
element.click()

# Types into the 'From YYYY' output range.
browser.find_element_by_css_selector('#fromYear').send_keys(񟬘') # The start year is 񟬘'.

# Finds and clicks the search button.
element = browser.find_element_by_css_selector('#resultArea > div.abstractionMenuArea.clearfix > div:nth-child(1) > a:nth-child(1)')
element.click()

После этого эта строка вызывает ошибку:

element = browser.find_element_by_xpath('/html/body/div[2]/div/div[2]/table/tbody/tr[2]/td[4]/a')

Всего 1 ответ


Пожалуйста, найдите ниже рабочее решение. Вам нужно перейти на вкладку и затем нажать на этот элемент, чтобы загрузить свой отчет.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import win32com.client as comclt
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as Wait

browser = webdriver.Chrome(executable_path=r"C:New folderchromedriver.exe")
browser.get('http://www.stat-search.boj.or.jp/ssi/cgi-bin/famecgi2?cgi=$nme_a000_en&lstSelection=PR01')

# Finds and clicks the Corporate Goods Price Index (2015 base) element.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.selectMenuItem > table > tbody > tr.selectedMenu > td.menuNameCell')
element.click()

# Finds and clicks the next button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.resultCountPanel.clearfix > input')
element.click()

# Finds and clicks the Producer Price Index element.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.selectMenuItem > table > tbody > tr.selectedMenu > td.menuNameCell')
element.click()

# Finds and clicks the next button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.resultCountPanel.clearfix > input')
element.click()

# Finds and clicks the All commodities element.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.selectMenuItem > table > tbody > tr.selectedMenu > td.menuNameCell')
element.click()

# Finds and clicks the next button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.nodeMenu > div.resultCountPanel.clearfix > input')
element.click()

# Finds and ticks the PR01'PRCG15_2200000000 PPI indicator element.
element = browser.find_element_by_css_selector('#menuSearchDataCodeList > tbody > tr:nth-child(1) > td > label')
element.click()

# Finds and clicks the add to search condition button.
element = browser.find_element_by_css_selector('body > div.contents > div > ul.tabContent > li:nth-child(1) > div.searchCondition > div.leafMenu > div:nth-child(6) > a')
element.click()

# Types into the 'From YYYY' output range.
browser.find_element_by_css_selector('#fromYear').send_keys(񟬘') # The start year is 񟬘'.

# Finds and clicks the search button.
element = browser.find_element_by_css_selector('#resultArea > div.abstractionMenuArea.clearfix > div:nth-child(1) > a:nth-child(1)')
element.click()

browser.switch_to.window(browser.window_handles[-1])
print browser.title
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//a[@class='littlelargeButton largeButton-download']"))).click();

Вывод: пожалуйста, найдите ниже вывод, как только вы нажмете на ссылку для скачивания

введите описание изображения здесь


Есть идеи?

10000