【问题标题】:Selenium - arrow Down and Enter not possible?Selenium - 向下箭头并输入不可能?
【发布时间】:2021-11-07 15:43:05
【问题描述】:

我尝试使用以下代码自动化网站 -

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
import time

link = "https://www.bcassessment.ca/"
options = Options()
options.add_argument("start-maximized")
options.add_argument('window-size=1920x1080')                                 
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
srv=Service(ChromeDriverManager().install())
driver = webdriver.Chrome (service=srv, options=options)    
waitWebDriver = WebDriverWait (driver, 10)    
driver.get (link)        
waitWebDriver.until(EC.element_to_be_clickable( \
  (By.XPATH, "//input[@id= 'rsbSearch']"))).send_keys("106 Maple")          
driver.find_element(By.XPATH, "//input[@id= 'rsbSearch']").send_keys(Keys.ARROW_DOWN)      
driver.find_element(By.XPATH, "//input[@id= 'rsbSearch']").send_keys(Keys.ENTER)      
time.sleep(500) 

该字段的文本输入工作正常 - 但必须按向下键,然后按回车键才能获得搜索结果。但这不适用于 Selenium。

为什么会这样?我需要做什么才能获得搜索结果(例如,按下并输入)?

【问题讨论】:

    标签: selenium xpath selenium-chromedriver key


    【解决方案1】:

    我看到手动输入搜索字符串后你需要点击搜索输入,然后按向下箭头,等到出现建议的结果,然后再按向下键再按回车键。
    还有,我看 所以请试试这个,它应该可以工作

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from webdriver_manager.chrome import ChromeDriverManager
    import time
    
    link = "https://www.bcassessment.ca/"
    options = Options()
    options.add_argument("start-maximized")
    options.add_argument('window-size=1920x1080')                                 
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-gpu')
    srv=Service(ChromeDriverManager().install())
    driver = webdriver.Chrome (service=srv, options=options)    
    waitWebDriver = WebDriverWait (driver, 10)    
    driver.get (link)        
    waitWebDriver.until(EC.element_to_be_clickable( \
      (By.XPATH, "//input[@id= 'rsbSearch']"))).send_keys("106 Maple")          
    searc_input = driver.find_element(By.XPATH, "//input[@id= 'rsbSearch']")
    searc_input.click()
    time.sleep(0.1) 
    searc_input.send_keys(Keys.ARROW_DOWN)      
    time.sleep(0.4) 
    searc_input.send_keys(Keys.ARROW_DOWN)      
    time.sleep(0.4) 
    searc_input.send_keys(Keys.ENTER)      
    

    【讨论】:

    • 哦,是的 - 等待时间是问题所在 - 谢谢。 (但我认为 100 / 400 / 500 太长了 - 这是第二次 - time.sleep(2) 对我来说很好)
    • 当然,对不起。我的意思是毫秒。我通常使用 Java ;)
    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2014-08-03
    • 2011-09-07
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多