当试图单击用ng-click定义的按钮时,我试图模拟使用Selenium Python从网站下载文件。
HTML文件具有以下内容:
<div class="col-lg-6 btn-group">
<br/>
<br/>
<input type="button" ng-click="exportToExcel('#exportable')" class="btn-text btn-link export-main" value="Export" />
</div>
在检查了不同的选项后,我输入的代码没有执行任何操作。
我
当我使用Selenium IDE时,记录的唯一步骤是“单击”“ css = btn-text”元素,并且可以使用,但是使用chrome驱动程序和Python中的Selenium时,不会下载任何内容。
我有此代码可确保Chrome驱动程序下载文件。 (我已经在其他网站上进行过测试,并且可以正常工作)
options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : self.download_location,
'download.prompt_for_download': False,
'download.directory_upgrade': True,
'safebrowsing.enabled': False,
'safebrowsing.disable_download_protection': False}
options.add_argument('--headless')
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options,
service_args=['--verbose', '--log-path=/tmp /chromedriver.log'])
这是我用来单击按钮以下载文件的代码:
export_button = WebDriverWait(self.webdriver,10).until(ec.visibility_of_element_located((By.CLASS_NAME, "export-main")))
ActionChains(self.webdriver)\
.click(export_button)\
.move_to_element(export_button)\
.perform()
我希望将指定文件夹中的excel文件下载到Chrome驱动程序,但是Selenium和Angular似乎不能很好地配合使用。
还有使用JavaScript调用“ ExportToExcel”函数的其他方法吗?
答案 0 :(得分:0)
我自己无法测试,因为每个网站都不一样,因此您可以调用您要查询的javascript函数。 Selenium允许您从webdriver内轻松执行javascript。可以使用
driver.execute_script("exportToExcel('#exportable');")
我不知道这是否会下载您的文件,但这回答了您有关如何在webdriver中执行javascript的问题。同样,是否下载文件取决于其他许多情况,这些情况在没有更多信息的情况下无法从您的帖子中确定。
答案 1 :(得分:0)
我找到了问题的答案:
只需调用javascript以单击“导出按钮”,如下所示:
self.webdriver.execute_script("arguments[0].click();", export_button)