我尝试使用webdriver自动下载报告。
到目前为止,我尝试过的是:
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()
通过这段代码,我得到了这条错误消息。
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)
问题
doReport被执行时,它会自动生成一个新的选项卡。发布于 2018-04-04 12:33:42
问题1:出现错误是因为,正如您在问题2中提到的,doReport会导致另一个选项卡打开。必须在调用driver.switch_to.window()之后执行另一个doReport。
问题2: driver.switch_to.window()是在同一个浏览器实例中将Selenium的兴趣从一个选项卡或窗口更改为另一个选项卡或窗口的命令。
发布于 2018-04-04 12:33:56
报告在一个新窗口中打开。在与该窗口中的元素交互之前,您需要告诉Selenium切换到该窗口:
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)https://stackoverflow.com/questions/49649070
复制相似问题