【发布时间】:2019-08-24 14:47:26
【问题描述】:
我正在尝试从网站下载文档。 当我在浏览器中检查元素时,我得到的是:
<td width="3%" align="left" id="tdvPDF0" colspan="3">
<a href="#" onclick="javaScript:downloadClicked('JRAOB2SNRXEAPX2', 0, 'PDF'); return false;" onmouseover="window.status='CTNF'; return true" onmouseout="window.status=''; return true">PDF</a>
/
<a href="#" onclick="javaScript:downloadClicked('JRAOB2SNRXEAPX2', 0, 'XML_LINK'); return false;" onmouseover="window.status='CTNF'; return true" onmouseout="window.status=''; return true">XML</a>
/
<a href="#" onclick="javaScript:downloadClicked('JRAOB2SNRXEAPX2', 0, 'DOCX'); return false;" onmouseover="window.status='CTNF'; return true" onmouseout="window.status=''; return true">DOCX</a>
</td>
我想下载所有三个文档,即 PDF、XML 和 DOCX。 这个 JavaScript 可以接受三个参数。在这种情况下,它们是: 1. JRAOB2SNRXEAPX2(字符串) 2. 0(整数) 3. PDF(字符串)
我不知道如何确定第一个参数的正确输入(在本例中:“JRAOB2SNRXEAPX2”)
无论第一个参数如何,我都想让我的代码正常工作。
以前,当我遇到 JavaScript 函数时,我使用了以下函数:
driver.execute_script(name_of_JavaScript_script())
这通常会起作用,但是我从未遇到过像这种情况下带有参数的 JavaScript,例如downloadClicked('JRAOB2SNRXEAPX2', 0, 'PDF')
我尝试了以下但没有成功:
driver.execute_script(downloadClicked('JRAOB2SNRXEAPX2', 0, 'PDF'))
driver.execute_script(downloadClicked(''JRAOB2SNRXEAPX2', 0, 'PDF''))
driver.execute_script(downloadClicked('JRAOB2SNRXEAPX2', 0, 'PDF')); return false;
以及许多其他类似的选项。
我也试过了:
javascript = driver.find_element_by_id('tdvPDF0').click()
driver.execute_script(javascript)
另外我试过了:
driver.find_element_by_id('tdvPDF0').click()
函数的代码目前如下所示:
def private_pair_ifw_downloader(driver, application_number, pause=1):
private_pair_enter_application(driver, application_number)
time.sleep(pause)
driver.execute_script('submitTab("ifwtab")')
time.sleep(pause)
driver.execute_script('"javaScript:downloadClicked(''JRAOB2SNRXEAPX2', 0, 'PDF''); return false;"')
我希望代码调用 JavaScript 函数,该函数反过来应该下载 PDF 文件,但是,我收到以下错误:
Traceback(最近一次调用最后一次): 文件“C:/Workspaces/patents_repo/USPTO_scraper/uspto_private_pair_scraper.py”,第 41 行,在 private_pair_ifw_downloader(驱动程序,'15723211') 文件“C:\Workspaces\patents_repo\utils\web_utils.py”,第 211 行,位于 private_pair_ifw_downloader driver.execute_script('"javaScript:downloadClicked(''JRAOB2SNRXEAPX2', 0, 'PDF''); return false;"') 文件“C:\Users\eitan\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 636 行,在 execute_script 'args': convert_args})['value'] 执行中的文件“C:\Users\eitan\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 321 行 self.error_handler.check_response(响应) 文件“C:\Users\eitan\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 242 行,在 check_response 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.WebDriverException:消息:未知错误:Runtime.evaluate 抛出异常:SyntaxError:意外标识符 (会话信息:chrome=76.0.3809.100)
【问题讨论】:
标签: javascript python selenium selenium-webdriver selenium-chromedriver