Я хочу использовать Selenium, чтобы щелкнуть элемент в выпадающем списке меню.К сожалению, элемент, который я хочу щелкнуть, находится внизу списка.Мой код Selenium Python Chrome отлично работает в режиме переднего плана, но когда я запускаю его в фоновом / автономном режиме, я получаю тайм-аут или не активируемую ошибку (см. Примечания ниже).Вот код, использующий фактический публичный URL, поэтому вы можете проверить его, если хотите:
# define chrome options
options = webdriver.ChromeOptions()
# make sure browser is maximized so all elements are visible
options.add_argument('--start-maximized')
# define driver
driver = webdriver.Chrome(chrome_options=options)
# define function used to get button
def getbutton(driver, xpath, waittime=10):
return WebDriverWait(driver, waittime).until(EC.element_to_be_clickable((By.XPATH, xpath)))
# navigate to url
driver.get('http://oasis.caiso.com/mrioasis/logon.do')
# another two different ways to make sure browser window is maximized
# I'm going through this trouble just in case selenium needs the window
# maximized to see the element
driver.fullscreen_window()
driver.maximize_window()
# choose dropdown menu
button1 = getbutton(driver, "//span[contains(@id, 'LBL_')][text()='ATLAS REFERENCE']", waittime=120)
hover = ActionChains(driver).move_to_element(button1)
hover.perform()
time.sleep(5)
# see about navigating to the second to last button in the drop down
# menu list - not what I want, but a test
testing = True
if testing:
# move to second to last button - interestingly this works in foregraound AND background / headless modes
button1a = getbutton(driver, "//span[contains(@id, 'LBL_')][text()='Intertie Scheduling Limit and Tie Mapping']")
hover = ActionChains(driver).move_to_element(button1a)
# THIS WORKS in foreground AND backgroubd modes
hover.perform()
time.sleep(10)
# Now try and click the button I really want - the LAST button in the drop down menu list
button2 = getbutton(driver, "//span[contains(@id, 'LBL_')][text()='Master Control Area Generating Capability List']", waittime=120)
button2.click()
button2 = getbutton завершается ошибкой со следующим сообщением об ошибке:
selenium.common.exceptions.TimeoutException
Интересно, если я переключаю тестирование на False, я получаю следующее сообщение об ошибке:
selenium.common.exceptions.WebDriverException: Message: unknown error:
Element <span ...></table>">Master Control Area Generating Capability List</span>
is not clickable at point (128, 599). Other element would receive the click
Кажется, что селен не может видеть элемент в фоновом / автономном режиме, хотя ни одно из этих исключений не возникает при запуске врежим переднего плана.
Я использую Python в Windows Server 2012 R2 для того, чего он стоит.
Спасибо за любую помощь!