selenium.common.exceptions.TimeoutException: эта ошибка будет возникать, когда я пытаюсь нажать кнопку, используя python - PullRequest
0 голосов
/ 27 ноября 2018

Я использую пакет Selenium для нажатия кнопки для веб-сайта.Когда я пытаюсь, я получаю сообщение об ошибке:

selenium.common.exceptions.TimeoutException: Message:

это код, который пытается запустить.

import time 
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 
from bs4 import BeautifulSoup as BSoup
from datetime import date, timedelta
import pyodbc 
import datetime

browser =  webdriver.Firefox()
browser.get("https://www.cbsl.gov.lk/rates-and-indicators/exchange-rates/daily-buy-and-sell-exchange-rates")
#time.sleep(10)

#browser.find_element_by_xpath('//*[@id="dailyexchange"]/div[2]/div/button[1]').click()

wait = WebDriverWait(browser, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="dailyexchange"]/div[2]/div/button[1]')))
element.click()

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Требуемый элемент находится в пределах <iframe>, поэтому вам необходимо:

  • Вызвать WebDriverWait , чтобы требуемый кадр был доступен, и переключиться на него .
  • Индуцируйте WebDriverWait , чтобы требуемый элемент был активным .
  • Вы можете использовать любое из следующих решений:

    • Использование CSS_SELECTOR:

      from selenium import webdriver
      from selenium.webdriver.chrome.options import Options
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      
      options = Options()
      options.add_argument("start-maximized")
      browser = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
      browser.get("https://www.cbsl.gov.lk/rates-and-indicators/exchange-rates/daily-buy-and-sell-exchange-rates")
      WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#iFrameResizer2[src='/cbsl_custom/exratestt/exratestt.php']")))
      WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-default[name='select_button']"))).click()
      
    • Снимок браузера:

selectall

0 голосов
/ 27 ноября 2018

Перед нажатием кнопки необходимо перейти в iframe:

browser.get("https://www.cbsl.gov.lk/rates-and-indicators/exchange-rates/daily-buy-and-sell-exchange-rates")
wait = WebDriverWait(browser, 20)
wait.until(EC.frame_to_be_available_and_switch_to_it('iFrameResizer2'))
element = wait.until(EC.element_to_be_clickable((By.NAME, 'select_button')))
element.location_once_scrolled_into_view
element.click()
...