首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法单击.gif文件生成报表

无法单击.gif文件生成报表
EN

Stack Overflow用户
提问于 2018-04-04 10:47:30
回答 2查看 43关注 0票数 0

我尝试使用webdriver自动下载报告。

到目前为止,我尝试过的是:

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome("C:/Users/Kob/Desktop/Python projects/Chrome webdriver/Chromedriver.exe")
driver.get("http://www2.ops3.moc.go.th/")

main_window = driver.window_handles[0]
new_window1 = driver.window_handles[1]
new_window2 = driver.window_handles[2]

Export = driver.find_element_by_link_text("EXPORT")
Export.click()

driver.switch_to.window(new_window1)
driver.close()
driver.switch_to.window(new_window2)
driver.close()
driver.switch_to.window(main_window)

driver.switch_to.frame("data")
driver.implicitly_wait(5)

Commodity = driver.find_element_by_link_text("Commodity")
Commodity.click()

Year = Select(driver.find_element_by_name("q_Year"));
Month = Select(driver.find_element_by_name("q_Month"));
Currency = Select(driver.find_element_by_name("q_currency"));

Year.select_by_index("0")
Month.select_by_index("1")
Currency.select_by_index("1")

hscode = driver.find_element_by_name("q_hsList")
hscode.send_keys("8507")

driver.execute_script("doReport()")
driver.find_element_by_id("exportdlgImage").click()

通过这段代码,我得到了这条错误消息。

代码语言:javascript
复制
NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"exportdlgImage"}
  (Session info: chrome=65.0.3325.181)
  (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 6.3.9600 x86_64)

问题

  1. 出现错误消息是因为浏览器承认它仍然在处理第一个选项卡,还是我在查找.gif文件时做错了什么?
  2. 如何在同一浏览器中的选项卡之间移动?我对此做了一些研究,但我发现只发送crtl+t键和页面上下。我不确定该解决方案是否可以在我的情况下使用,因为当脚本doReport被执行时,它会自动生成一个新的选项卡。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-04 12:33:42

问题1:出现错误是因为,正如您在问题2中提到的,doReport会导致另一个选项卡打开。必须在调用driver.switch_to.window()之后执行另一个doReport

问题2: driver.switch_to.window()是在同一个浏览器实例中将Selenium的兴趣从一个选项卡或窗口更改为另一个选项卡或窗口的命令。

票数 0
EN

Stack Overflow用户

发布于 2018-04-04 12:33:56

报告在一个新窗口中打开。在与该窗口中的元素交互之前,您需要告诉Selenium切换到该窗口:

代码语言:javascript
复制
windows = driver.window_handles

driver.find_element_by_partial_link_text("preview report").click()
WebDriverWait(driver, 5).until(EC.new_window_is_opened(windows))

new_window = list(set(windows) - set(driver.window_handles))[0]
driver.switch_to.window(new_window)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49649070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档