使用Selenium选择下拉选项。无头铬。蟒蛇

时间:2019-11-08 16:50:30

标签: python selenium selenium-webdriver selenium-chromedriver

我正在尝试从下拉菜单中选择一个选项,以展开页面上的记录。当我没有狂奔时,它工作正常。当我无头运行时,在页面等待查找元素时收到超时异常错误。

<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,ID和名称。

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 个答案:

答案 0 :(得分:2)

对于headless浏览器,您必须将窗口大小设置为在事件时触发。因为无头浏览器在没有窗口大小的情况下无法识别点击位置。

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

如果上述选项不起作用,请使用

检查网站是否以无头模式阻止
print(driver.page_source)