【问题标题】:Selenium: Why inputs values don't preserve the given values?Selenium:为什么输入值不保留给定值?
【发布时间】:2021-12-28 19:12:08
【问题描述】:

我在使用 Selenium 时遇到以下问题:

我已经成功完成了“Origen”和“Destino”这两个字段,但是脚本出现后的值,消失了。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time


#Opciones navegacion
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
options.add_argument('--disable-extensions')

driver_path = "C:/Users/Diego/Downloads/chromedriver.exe"
driver = webdriver.Chrome(driver_path, chrome_options = options)
 

#Iniciar en la pantalla 2
#driver.set_window_position(2000,0)
driver.maximize_window()
time.sleep(1)

#Inicializamos el navegador
driver.get('https://www.starken.cl/cotizador')

WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#rc_select_6"))).send_keys('SANTIAGO')
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#rc_select_7"))).send_keys('VINA DEL MAR')

如有任何建议,我将不胜感激。

【问题讨论】:

  • 欢迎来到 Stack Overflow
  • 看起来它要求您选择一个自动建议值...那里的一种组合框?
  • 没错!这是一个组合框。

标签: python selenium selenium-webdriver autocomplete webdriverwait


【解决方案1】:

这些<input>s 是基于ant 的输入框,其角色为combobox,它会生成,您必须从中选择一个。

要将字符序列 SANTIAGO发送到元素并从您需要的自动建议中选择它将WebDriverWait 诱导为element_to_be_clickable(),您可以使用以下任一Locator Strategies

  • 代码块:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[text()='Origen:']//following::div[1]//span[@class='ant-select-selection-search']/input[@class='ant-select-selection-search-input']"))).send_keys('SANTIAGO')
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[@title='SANTIAGO']/div[@class='ant-select-item-option-content' and text()='SANTIAGO']"))).click()
    
  • 浏览器快照:

【讨论】:

    【解决方案2】:

    有时使用下拉菜单,需要用户输入来确认选择,可以是鼠标单击或回车按钮。我选择了后者。我还为您的等待功能添加了一些时间,因为页面加载到我所在的位置需要更长的时间,并且等待已过期。这只是“等待”而不是“等待”。

    另外值得一提的是,如果您的输入导致多个项目,您可能需要进行进一步的选择;即这些结果中的哪一项?

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    import time
    
    
    #Opciones navegacion
    options = webdriver.ChromeOptions()
    options.add_argument('--start-maximized')
    options.add_argument('--disable-extensions')
    
    #driver_path = "C:/Users/Diego/Downloads/chromedriver.exe"
    driver = webdriver.Chrome()
     
    
    #Iniciar en la pantalla 2
    #driver.set_window_position(2000,0)
    driver.maximize_window()
    time.sleep(1)
    
    #Inicializamos el navegador
    driver.get('https://www.starken.cl/cotizador')
    WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#rc_select_6"))).send_keys('SANTIAGO' + u'\ue007' )
    WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#rc_select_7"))).send_keys('VINA DEL MAR' + u'\ue007')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多