我正在尝试自动化从网站下载数据的过程。如果我一步一步地运行它,代码就会工作,但如果我一次运行所有代码,它就会失败。给出错误
ElementNotInteractableException: Message: element not interactable
我已经用时间解决了这个问题。睡眠(x时间量(,但它似乎仍然间歇性地失败。我在实现隐式等待时遇到问题。如有任何帮助,我们将不胜感激。下面的代码。
import selenium
browser = webdriver.Chrome(executable_path=r'pathtochromedriver.exe')
browser.get("https://map.sarig.sa.gov.au/")
browser.maximize_window()
browser.switch_to.frame(browser.find_element_by_id('MapViewer'))
browser.find_element_by_xpath('//*[@id="TourWidget"]/div[1]/span').click()
browser.find_element_by_xpath('//*[@id="menuAllMapLayers"]/div[2]/p').click()
browser.find_element_by_xpath('//*[@id="238"]/li[1]/div/div/span[1]').click()
time.sleep(3)
browser.find_element_by_xpath('//*[@id="238"]/li[1]/div/div/span[1]').click()
browser.find_element_by_xpath('//*[@id="238"]/li[3]/div/div/label/span').click()
browser.find_element_by_xpath('//*[@id="239"]/li[1]/div/div/span[1]').click()
browser.find_element_by_xpath('//*[@id="239"]/li[3]/div/div/label/span').click()
browser.find_element_by_xpath('//*[@id="menuActiveLayers"]').click()
browser.find_element_by_xpath('//*[@id="groupOptions238"]/span').click()
time.sleep(3)
browser.find_element_by_xpath('//*[@id="238"]/li[2]/div/div[3]/div[2]/span').click()
browser.find_element_by_xpath('//*[@id="groupOptions239"]/span').click()
time.sleep(3)
browser.find_element_by_xpath('//*[@id="239"]/li[2]/div/div[3]/div[2]/span').click()
使用ActionChains并访问pause(3)
,而不是使用sleep(3)
,但使用Waits并检查元素是否真的是;可见";而不是";现在";(参见预期条件(
它有很多下拉列表,所以可能不是一直都可见,但您可以在执行move_to_element((后运行这些检查,这样它就会实际存在。