python - 使用 Selenium 选择下拉选项。 headless Chrome 。 Python

标签 python selenium selenium-webdriver selenium-chromedriver

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

<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:

最佳答案

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

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

如果上述选项不起作用,请检查网站是否在 headless 模式下使用

print(driver.page_source)

关于python - 使用 Selenium 选择下拉选项。 headless Chrome 。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58770745/

相关文章:

python - Python 3 中的 Unicode 正则表达式(来自 Python 2 代码)

python - 在 python 中读取/写入文件的更好方法?

python - 如何将参数传递给 Django 表单?

c# - Selenium:By.Id ("myelement") 和 By.Css ("#myelement") 之间是否存在性能差异?

java - Selenium Web 驱动程序 Mac 上的 Safari 无法访问浏览器异常

python - 访问第一个元素后无法通过 xpaths 循环访问剩余元素 - Webscraping Selenium Python

java - 如何在 Java 中将 OpenLayers DrawFeature 与 Selenium WebDriver 一起使用(双击问题)?

python - 选择 numpy.ndarray 的行,其中第一行号在某个列表中

java - fork 过程 org/apache/commons/io/FileUtils org.apache.maven.surefire.booter.SurefireBooterForkException 中出现错误

尝试检索图像链接时出现 Python 错误