Jadi saya memiliki file python yang masuk ke Instagram.com, memasukkan kredensial akun, dan akhirnya memasukkan kunci ke dalam kotak pencarian setelah masuk. Setelah memasukkan kunci ke dalam kotak pencarian, saya tidak bisa melihat untuk mengirimkan kunci jadi Instagram dapat membawa saya ke halaman akun (mis: saya meletakkan @streetgoodies di bilah pencarian instagram, saya klik enter, dan itu membawa saya ke www.instagram.com/streetgoodies/)

Apakah ada cara saya dapat mengirimkan kunci ke dalam pencarian sehingga dapat mengarahkan saya ke permintaan pencarian yang saya minta?

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() menyebabkan masalah (saya percaya) Terima kasih!!

0
Emmanuel Shaakov 6 Mei 2018, 00:46

1 menjawab

Jawaban Terbaik

Saya menulis naskah untuk Anda. Biar saya jelaskan dulu:

  1. Saya mendapat halaman login langsung. Jadi, Anda tidak perlu mencari login.
  2. Seharusnya ada fungsi WebDriverWait karena halaman login tidak muncul dengan cepat.
  3. Masalah utama kode dan instagram Anda adalah tidak ada tombol kirim. Jadi harus ada send_keys(Keys.ENTER)
  4. One Keys.ENTER memilih item pertama :) jadi saya menambahkan Keys.Enter lain

Kode ini berfungsi:

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)
0
Ekrem Gurdal 6 Mei 2018, 11:03