"Server Error in '/' Application" 由于 Oracle.ManagedDataAccess.Client.Oracle.Exception: ORA-20002: Procedure(CA_Clasic_Search)Error using Selenium

"Server Error in '/' Application" due to Oracle.ManagedDataAccess.Client.Oracle.Exception: ORA-20002: Procedure(CA_Clasic_Search)Error using Selenium

我是 运行 Python 3 中的一个循环,使用 Selenium 访问网站,输入用户名 + 密码,在搜索中输入公司名称(然后对于特定公司,它会崩溃) , 并获取一些文本。正在生成每个循环以查找特定公司的收入,此错误消息会针对大多数搜索弹出,但不是全部搜索。我发现在将公司名称输入搜索栏后单击搜索按钮时会发生错误。

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)

该错误与 Selenium 无关。它是您正在测试的网络应用程序中的一个错误。 Selenium 完成了它的工作,发现了你的缺陷!

这个错误信息...

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

...表示在尝试更改服务请求所有者时无法更改,因为存在活动工作流。

您的主要问题是在标识为 driver.find_element_by_name('buttonSearch') 的元素上调用 click() 的时间太早,因为有一些 JavaScript / AJAX 更新 HTML DOM.

您可以在 ORA-20002 error when try to cancel active workflow on the Service Request form (Doc ID 2045240.1)

中找到关于此错误的详细讨论

解决方案

您需要诱导 WebDriverwait 以使所需的 元素可点击,您可以使用以下解决方案:

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, "buttonSearch"))).click()