在 Python Selenium 中查找元素

问题描述 投票:0回答:1

我从昨天开始尝试使用 XPATH、CSS_SELLECTOR 查找一些按钮元素,但我的代码无法正常工作。我不明白我有我在网站上选择的标签之一,但找不到元素问题是什么?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
#from instagramuser import username,password

class Instagram:
    def __init__(self,username,password):
        self.username = username 
        self.password = password
        self.browser = webdriver.Chrome()`


    def signIn(self):
        self.browser.get("https://www.instagram.com/")
        self.browser.maximize_window()
        time.sleep(2)
        self.browser.find_element(By.XPATH,'//*[@id="loginForm"]/div/div[1]/div/label/input').send_keys(self.username)
        time.sleep(1)
        self.browser.find_element(By.XPATH,'//*[@id="loginForm"]/div/div[2]/div/label/input').send_keys(self.password)
        time.sleep(1)
        self.browser.find_element(By.CSS_SELECTOR,'button[class="_a9-- _a9_0"]').click()
        time.sleep(5)
        
    def getFollowers(self):
        self.browser.get(f"https://www.instagram.com/{self.username}/")
        self.browser.find_element(By.XPATH,'//*[@id="mount_0_0_JS"]/div/div/div[1]/div/div/div/div[1]/div[1]/div[2]/section/main/div/header/section/div[1]/div[1]/div[1]/div/a')

ERROR PHOTO`

python selenium-webdriver selenium-chromedriver instagram
1个回答
0
投票

您的选择器错误,这是正确的 Xpath:

self.browser.find_element(By.XPATH, '//button[@class="_acan _acap _acas _aj1-"]').click()

用您的错误中出现的那个替换它。

还有一个提示,不要使用 time.sleep 来等待页面加载,你应该使用 WebdriverWait 模块,等待元素出现的最长时间,但是当它找到它时,程序会立即运行.

例子:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

element = WebDriverWait(self.browser, 10).until(ec.presence_of_element_located((By.XPATH, '//button[@class="_acan _acap _acas _aj1-"]')))

# You can do whatever actions you like then

element.click()

element.send_keys()
© www.soinside.com 2019 - 2024. All rights reserved.