【问题标题】:Python / Selenium - Can't submit the keys in Instagram search inputPython / Selenium - 无法在 Instagram 搜索输入中提交密钥
【发布时间】:2018-05-05 21:46:13
【问题描述】:

所以我有一个 python 文件,它进入 Instagram.com,放置帐户凭据,最后在登录后将密钥输入到搜索框中。 将密钥放入搜索框中后,我看不到提交密钥,因此 Instagram 可以将我带到帐户页面 (例如:我将@streetgoodies 放在instagram 搜索栏中,然后点击进入,它会将我带到www.instagram.com/streetgoodies/)

有什么方法可以将键提交到搜索中,以便它可以将我重定向到我请求的搜索查询?

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

# start a new browser session 
browser = webdriver.Chrome('PATH/TO/DRIVER')

# navigate to a webpage
browser.get('https://www.instagram.com')

# find login link 
login_elem = browser.find_element_by_xpath(
    '//*[@id="react-root"]/section/main/article/div[2]/div[2]/p/a')

# click login in button
login_elem.click()

# send login info credentials to correct input boxes
browser.find_element_by_xpath("//input[@name='username']").send_keys('USERNAME')
browser.find_element_by_xpath("//input[@name='password']").send_keys('PASSWORD')

# click final login button
browser.find_element_by_xpath("//button[contains(.,'Log in')]").click()

# find hidden search bar
searchbox = WebDriverWait(browser, 10).until(
    EC.visibility_of_element_located(
        (By.XPATH, "//input[@placeholder='Search']")
    )
)

# send search into input

searchbox.send_keys('streetgoodies')
searchbox.submit()

searchbox.submit() 导致了问题(我相信) 谢谢!!

【问题讨论】:

    标签: python python-3.x selenium automation instagram


    【解决方案1】:

    我为你写了一个脚本。我先解释一下:

    1. 我得到了直接登录页面。因此,您无需搜索登录信息。
    2. 应该有WebDriverWait功能,因为登录页面没有快速出现。
    3. 您的代码和instagram 的主要问题是没有任何提交按钮。所以应该有 send_keys(Keys.ENTER)
    4. 一个 Keys.ENTER 选择第一项 :) 所以我添加了另一个 Keys.Enter

    此代码有效:

    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # start a new browser session 
    browser = webdriver.Chrome('/pathtochromedriver')
    
    # navigate to a webpage
    browser.get('https://www.instagram.com/accounts/login/')
    login_wait = WebDriverWait(browser, 10)
    
    # click login in button
    elem = login_wait.until(EC.visibility_of_element_located((By.XPATH, ".//input[@name='username']")))
    elem.send_keys("usrname")
    elem = login_wait.until(EC.visibility_of_element_located((By.XPATH, ".//input[@name='password']")))
    elem.send_keys("passwd")
    
    # click final login button
    browser.find_element_by_xpath("//button[contains(.,'Log in')]").click()
    
    # find hidden search bar
    searchbox = WebDriverWait(browser, 10).until(
        EC.visibility_of_element_located(
            (By.XPATH, "//input[@placeholder='Search']")
        )
    )
    
    # send search into input
    
    searchbox.send_keys('streetgoodies')
    time.sleep(2)
    # searchbox.submit()
    
    searchbox.send_keys(Keys.ENTER)
    time.sleep(1)
    searchbox.send_keys(Keys.ENTER)
    

    【讨论】:

    • 你太棒了,非常感谢!我还了解到您应该首先清除 textarea,因为它是一个反应应用程序(不是真正的元素)工作得很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多