«Ошибка сервера в« / »приложении» из-за Oracle.ManagedDataAccess.Client.Oracle.Exception: ORA-20002: ошибка процедуры (CA_Clasic_Search) с использованием Selenium - PullRequest
0 голосов
/ 31 января 2019

Я выполняю цикл в Python 3, используя Selenium, который заходит на веб-сайт, вводит имя пользователя + пароль, вводит название компании в поиске (затем для определенных компаний происходит сбой) и получает некоторый текст.Каждый цикл создается для поиска дохода для конкретной компании, эти сообщения об ошибках появляются для большинства запросов, но не для всех.Я обнаружил, что ошибка возникает при нажатии кнопки поиска после того, как название компании введено в строку поиска.

Copy of Error When Program is run, Using Firefox Browser

def rev_finder(company,driver):
  page = 'https://corporateaffiliations.com/Nonsub/AccountHelp'
  driver.get(page)

  user = driver.find_element_by_id('strUserName')
  user.clear()
  user.send_keys(username)

  password = driver.find_element_by_id('strPassword')
  password.clear()
  password.send_keys(password1)

  button = driver.find_element_by_id('signOn')
  button.click()

  driver.implicitly_wait(5)

  search = driver.find_element_by_id('VAL_Name')
  search.click()
  search.send_keys(company)

  parent = driver.find_element_by_name('VAL_ParentMember')
  parent.click()

  button = driver.find_element_by_name('buttonSearch')
  button.click()

  driver.implicitly_wait(5)

  revenue = driver.find_element_by_xpath("/html/body/div/div[3]/div/table/tbody/tr/td/form/table[2]/tbody/tr[2]/td[6]/div").get_attribute("innerHTML")
  return revenue

def remove(string):
  string.replace("INC","").replace("Inc","").replace(".","").replace(",","")
  return string
companies = sheet['Company']
companies = companies[1:4]

revenue = []
for company in companies:
   company = remove(company)
   try:
      driver = webdriver.Firefox(executable_path=r'C:\Users\ktorres\Downloads\geckodriver-v0.24.0-win64\geckodriver')
      rev = rev_finder(company,driver)

   except:
      rev = 'Check Manually'
   revenue.append(rev)

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Это сообщение об ошибке ...

“Server Error in '/' Application”
Oracle.ManagedDataAccess.Client.Oracle.Exception: ORA-20002: Procedure(CA_Clasic_Search)Error : Execution Error of Intermedia Query

... подразумевает, что при попытке изменить владельца запроса на обслуживание его нельзя изменить, поскольку существует активный рабочий процесс.

Ваш главныйпроблема заключается в том, что время вызова click() для элемента, обозначенного как driver.find_element_by_name('buttonSearch'), было слишком ранним, поскольку были некоторые JavaScript / AJAX , обновляющие HTML DOM .

Подробное обсуждение этой ошибки можно найти в Ошибка ORA-20002 при попытке отменить активный рабочий процесс в форме запроса на обслуживание (идентификатор документа 2045240.1)


Решение

Вам нужно активировать WebDriverwait , чтобы желаемый элемент был активным для клика , и вы можете использовать следующее решение:

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, "buttonSearch"))).click()
0 голосов
/ 01 февраля 2019

Эта ошибка не имеет ничего общего с Selenium.Это ошибка в тестируемом веб-приложении.Selenium выполнил свою работу и обнаружил у вас дефект!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...