refactoring
This commit is contained in:
@@ -110,29 +110,31 @@
|
|||||||
" service = ChromeService(executable_path = ChromeDriverManager().install()),\n",
|
" service = ChromeService(executable_path = ChromeDriverManager().install()),\n",
|
||||||
" options = _getOptions(downloadDir, isHeadless))\n",
|
" options = _getOptions(downloadDir, isHeadless))\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def saveCaptchaImageAs(captchaImageFile):\n",
|
"def saveCaptchaImageAs(driver, captchaImageFile):\n",
|
||||||
" captchaImage = driver.find_element(By.CSS_SELECTOR, \"img[src='captchaImage']\")\n",
|
" captchaImage = driver.find_element(By.CSS_SELECTOR, \"img[src='captchaImage']\")\n",
|
||||||
" with open(captchaImageFile, 'wb') as file:\n",
|
" with open(captchaImageFile, 'wb') as file:\n",
|
||||||
" file.write(captchaImage.screenshot_as_png)\n",
|
" file.write(captchaImage.screenshot_as_png)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def existsElementWithId(id):\n",
|
"def existsElementWithId(driver, id):\n",
|
||||||
" return len(driver.find_elements(By.ID, id)) > 0"
|
" return len(driver.find_elements(By.ID, id)) > 0\n",
|
||||||
|
"\n",
|
||||||
|
"def isCaptchaSolved(driver):\n",
|
||||||
|
" return not existsElementWithId(driver, \"wordverify\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
"id": "8ac81845",
|
"id": "aef4d1c3",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"downloadDir = \"/home/frankknoll/Dokumente/Corona/projects/HowBadIsMyBatch/src/VAERS/tmp\"\n",
|
"import time\n",
|
||||||
"file2Download = '2022VAERSData.zip'\n",
|
"import os.path\n",
|
||||||
"captchaImageFile = 'captchaImage.jpeg'\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"driver = getWebDriver(downloadDir, isHeadless = False)\n",
|
"def waitUntilDownloadHasFinished(file):\n",
|
||||||
"driver.get('https://vaers.hhs.gov/eSubDownload/index.jsp?fn=' + file2Download)\n",
|
" while not os.path.exists(file):\n",
|
||||||
"saveCaptchaImageAs(captchaImageFile)"
|
" time.sleep(2)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -162,41 +164,34 @@
|
|||||||
"class AndroidEmulator:\n",
|
"class AndroidEmulator:\n",
|
||||||
" \n",
|
" \n",
|
||||||
" @staticmethod\n",
|
" @staticmethod\n",
|
||||||
" def runWithinEmulator(runnable):\n",
|
" def run(runnable):\n",
|
||||||
" AndroidEmulator._startEmulator()\n",
|
" AndroidEmulator._start()\n",
|
||||||
" result = runnable()\n",
|
" result = runnable()\n",
|
||||||
" AndroidEmulator._stopEmulator()\n",
|
" AndroidEmulator._stop()\n",
|
||||||
" return result\n",
|
" return result\n",
|
||||||
" \n",
|
" \n",
|
||||||
" @staticmethod\n",
|
" @staticmethod\n",
|
||||||
" def _startEmulator():\n",
|
" def _start():\n",
|
||||||
" os.system(\"/home/frankknoll/Android/Sdk/emulator/emulator -avd Pixel_2_API_30 -no-window &\")\n",
|
" os.system(\"/home/frankknoll/Android/Sdk/emulator/emulator -avd Pixel_2_API_30 -no-window &\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" @staticmethod\n",
|
" @staticmethod\n",
|
||||||
" def _stopEmulator():\n",
|
" def _stop():\n",
|
||||||
" ! adb emu kill\n"
|
" ! adb emu kill"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
"id": "c113e49d",
|
"id": "8eef224c",
|
||||||
"metadata": {
|
|
||||||
"scrolled": false
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"textInCaptchaImage = AndroidEmulator.runWithinEmulator(lambda: getTextInCaptchaImage(captchaImageFile))"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"id": "2dfc95c3",
|
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"textInCaptchaImage"
|
"downloadDir = \"/home/frankknoll/Dokumente/Corona/projects/HowBadIsMyBatch/src/VAERS/tmp\"\n",
|
||||||
|
"file2Download = '2022VAERSData.zip'\n",
|
||||||
|
"captchaImageFile = 'captchaImage.jpeg'\n",
|
||||||
|
"\n",
|
||||||
|
"driver = getWebDriver(downloadDir, isHeadless = False)\n",
|
||||||
|
"driver.get('https://vaers.hhs.gov/eSubDownload/index.jsp?fn=' + file2Download)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -206,57 +201,25 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"driver.find_element(By.ID, \"verificationCode\").send_keys(textInCaptchaImage)"
|
"def solveCaptcha(driver, captchaImageFile):\n",
|
||||||
]
|
" saveCaptchaImageAs(driver, captchaImageFile)\n",
|
||||||
},
|
" textInCaptchaImage = AndroidEmulator.run(lambda: getTextInCaptchaImage(captchaImageFile))\n",
|
||||||
{
|
" display('textInCaptchaImage: ', textInCaptchaImage)\n",
|
||||||
"cell_type": "code",
|
" driver.find_element(By.ID, \"verificationCode\").send_keys(textInCaptchaImage)\n",
|
||||||
"execution_count": null,
|
" driver.find_element(By.CSS_SELECTOR, '[name=\"downloadbut\"]').click()\n",
|
||||||
"id": "6cf55175",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"driver.find_element(By.CSS_SELECTOR, '[name=\"downloadbut\"]').click()"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"id": "86e5056f",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"def isCaptchaSolved():\n",
|
|
||||||
" return not existsElementWithId(\"wordverify\")"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"id": "b6b47c06",
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"import time\n",
|
|
||||||
"import os.path\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"def waitUntilDownloadHasFinished():\n",
|
"maxTries = 5\n",
|
||||||
" while not os.path.exists(downloadDir + \"/\" + file2Download):\n",
|
"tryNum = 1\n",
|
||||||
" time.sleep(2)"
|
"solveCaptcha(driver, captchaImageFile)\n",
|
||||||
]
|
"while(not isCaptchaSolved(driver) and tryNum <= maxTries):\n",
|
||||||
},
|
" solveCaptcha(driver, captchaImageFile)\n",
|
||||||
{
|
" tryNum = tryNum + 1\n",
|
||||||
"cell_type": "code",
|
"\n",
|
||||||
"execution_count": null,
|
"if isCaptchaSolved(driver):\n",
|
||||||
"id": "b1ebc05c",
|
" waitUntilDownloadHasFinished(downloadDir + \"/\" + file2Download)\n",
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"if isCaptchaSolved():\n",
|
|
||||||
" waitUntilDownloadHasFinished()\n",
|
|
||||||
" display('file downloaded')\n",
|
" display('file downloaded')\n",
|
||||||
"else:\n",
|
"else:\n",
|
||||||
" display('try again')"
|
" display('failed to solve captcha and download file')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user