python - Python / Selenium - 无法在 Instagram 搜索输入中提交密钥
问题描述
所以我有一个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() 导致问题(我相信)谢谢!
解决方案
我为你写了一个脚本。我先解释一下:
- 我得到了直接登录页面。因此,您无需搜索登录。
- 应该有 WebDriverWait 功能,因为登录页面不会很快出现。
- 您的代码和 instagram 的主要问题是没有任何提交按钮。所以应该有 send_keys(Keys.ENTER)
- 一个 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)
推荐阅读
- python - 如何连接具有 NAN 的熊猫中的列?
- python - Python-docx:表格中降价的超链接文本
- ios - Xcode 12 和 iOS 15
- c# - OpenTK 读取深度缓冲区到数组
- node.js - 当我们传递无效的存储桶名称和 s3 上不存在的存储桶时,可能会出现什么错误
- reactjs - React 组件未在状态更新时呈现
- java - 结束大小 %d 小于固定大小 %d
- r - Netlogo R 扩展:user.properties 文件丢失
- java - couchdb 读取响应转换花费了这么多时间
- google-app-engine - SSH 进入 GAE 标准环境实例