【问题标题】:Select drop down option using Selenium. Headless chrome. Python使用 Selenium 选择下拉选项。无头镀铬。 Python
【发布时间】:2019-11-09 04:15:43
【问题描述】:

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

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

【问题讨论】:

  • 你不能只运行一些 javascript 来直接设置值吗?所以document.getElementById("selectionid").value = 1000
  • 您使用的是什么无头浏览器驱动程序? PhantomJS?
  • @JohnGordon - 我使用的是 Chromedriver 版本 78。运行 Selenium,用 python 编写。
  • @WilliamBright - 不知道怎么做,但我会看看是否能找到尝试的方法。
  • 如果您使用的是 Chrome,那它是如何无头的?我觉得我错过了什么。

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

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

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

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

print(driver.page_source)

【讨论】:

  • 这解决了我的问题。感谢您的输入,我没有意识到无头运行会改变窗口大小。
猜你喜欢
  • 2017-12-23
  • 2021-11-25
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2017-03-23
  • 2018-10-11
相关资源
最近更新 更多