"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()
我是 运行 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()