Выберите опцию выпадающего с помощью Selenium. Безголовый хром. питон - PullRequest
2 голосов
/ 08 ноября 2019

Я пытаюсь выбрать опцию из выпадающего меню, которое расширяет записи на странице. Это работает нормально, когда я не бегаю без головы. Когда я запускаю в автономном режиме, я получаю ошибку исключения тайм-аута, пока страница ждет, чтобы найти элемент.

<select name="ctl00$ContentPlaceHolder1$uxTabContracts$uxTabPanelWaintingApproval$uxGridList$ctl05$uxUCGridViewPagingTemplate$uxDropDownListPageSize" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$uxTabContracts$uxTabPanelWaintingApproval$uxGridList$ctl05$uxUCGridViewPagingTemplate$uxDropDownListPageSize\',\'\')', 0)" id="ContentPlaceHolder1_uxTabContracts_uxTabPanelWaintingApproval_uxGridList_uxUCGridViewPagingTemplate_uxDropDownListPageSize">
                <option value="5">5</option>
                <option value="10">10</option>
                <option value="20">20</option>
                <option value="30">30</option>
                <option value="40">40</option>
                <option value="50">50</option>
                <option value="100">100</option>
                <option value="250">250</option>
                <option value="500">500</option>
                <option selected="selected" value="1000">1000</option>

            </select>

Я пытался использовать XPATH, идентификатор и имя.

wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="ContentPlaceHolder1_uxTabContracts_uxTabPanelWaintingApproval_uxGridList_uxUCGridViewPagingTemplate_uxDropDownListPageSize"]'))) # wait for option to expand page
    ExpandRecords = Select(chrome.find_element_by_xpath('//*[@id="ContentPlaceHolder1_uxTabContracts_uxTabPanelWaintingApproval_uxGridList_uxUCGridViewPagingTemplate_uxDropDownListPageSize"]')) # define element to expand page
    ExpandRecords.select_by_value('1000') # select page size option from dropdown

Ожидаемый результат - выбрать «1000» записей, и страница развернется и перейдет к следующему фрагменту кода, который выберет необходимые записи, которые мне нужны. То, что происходит, ничего не значит. и я получаю исключение тайм-аута.

line 289, in Import_To_CRM
    wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="ContentPlaceHolder1_uxTabContracts_uxTabPanelWaintingApproval_uxGridList_uxUCGridViewPagingTemplate_uxDropDownListPageSize"]'))) # wait for option to expand page
selenium.common.exceptions.TimeoutException: Message:

1 Ответ

2 голосов
/ 08 ноября 2019

Для headless браузера вы должны установить размер окна для запуска при событии. Потому что безголовый браузер не может распознать, где нажать без размера окна.

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('window-size=1920x1080');

Если вышеуказанная опция не работаетзатем проверьте, блокируется ли веб-сайт в автономном режиме, используя

print(driver.page_source)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...