Hướng dẫn message: no such element: unable to locate element: (method:css selector,selector) - thông báo: không có phần tử như vậy: không thể định vị phần tử: (method: css selector, selector)

Tôi đang cố gắng lấy thông tin từ một trang web và sau đó tái sử dụng nó ... vì điều đó tôi sử dụng selenium với Python.

Những gì tôi đã làm cho đến nay là:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome[ChromeDriverManager[].install[]]
driver.get['//www.olx.ro/oferta/vand-apartament-3-camere-2-dormitor-1-living-IDdJOij.html']
time.sleep[10]

inputElement = driver.find_element_by_class_name["spoiler"]

time.sleep[12]
inputElement.send_keys[Keys.ENTER]

Nếu trên trang này, bạn nhấp vào "Suna Vanzatorul", số điện thoại của người bán sẽ xuất hiện ... Tôi muốn lấy thông tin này ....

Mục nên được nhấp có lớp:

Liên hệ-Button Link-Phone {'Path': 'Phone', 'Id': 'Dcuxh', 'ID_RAW': '195069687'}

Thật không may, điều này không tĩnh, nó là động và sau khi nhấp vào lỗi này xuất hiện:

selenium.common.exceptions.nosuchelementexception: Thông điệp: Không có yếu tố như vậy: Không thể định vị phần tử: {"Phương thức": "Bộ chọn CSS", "Bộ chọn": ". .4103.97]

Xin vui lòng làm thế nào tôi có thể trích xuất thông tin đó từ trang web đó ...

Gutha Vamsi Krishna

exception là gì?

Một exception là một sự kiện xảy ra trong quá trình thực hiện một chương trình, phá vỡ luồng thông thường của các hướng dẫn của chương trình.

Tại sao NoSuchElementException xảy ra ở selen?

Khi chúng tôi cố gắng tìm bất kỳ yếu tố nào trong một trang HTML không tồn tại, NoSuchElementException sẽ được nâng lên.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="userNam"]"}

Những lý do có thể để gỡ lỗi

Dưới đây là một số ví dụ về các kịch bản sẽ tăng một ngoại lệ.

1. Thay đổi mã nguồn của trang web

Nó có thể là mã nguồn của trang web có thể đã được thay đổi kể từ lần cuối cùng bạn truy cập. Thay đổi mã của bạn theo nguồn mới để giải quyết vấn đề.

2. Lỗi chính tả của phần tử

Kiểm tra chéo chính tả của yếu tố bạn muốn tìm.

3. Xpath không hợp lệ

Khi các phần tử mới được thêm hoặc xóa khỏi mã nguồn của trang web, XPath của phần tử cụ thể đó cũng thay đổi. Kiểm tra XPath để xác định xem nó có hợp lệ không.

Thử nghiệm

Khi chúng tôi cố gắng chạy mã bên dưới, nó sẽ tăng NoSuchElementException. Điều này là do chúng tôi cố gắng tìm một phần tử được gọi là userNam, nhưng tên phần tử trang web trong mã nguồn là ____10.

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.keys import Keys

import time

PATH=r"provide your chrome driver path here"

driver = webdriver.Chrome[PATH]

driver.get["//demo.guru99.com/test/newtours/"]

user_name = driver.find_element_by_name["userNam"]

password = driver.find_element_by_name["password"]

submit = driver.find_element_by_name["submit"]

user_name.send_keys["mercury"]

password.send_keys["mercury"]

submit.click[]

Xử lý ngoại lệ

Kịch bản sẽ chấm dứt khi một ngoại lệ được nâng lên. Chúng ta có thể xử lý các ngoại lệ với khối

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="userNam"]"}
1 và tiếp tục với luồng của tập lệnh.

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.keys import Keys

from selenium.common.exceptions import NoSuchElementException

import time

PATH=r"C:\Users\GUTKRISH\chromedriver.exe"

driver = webdriver.Chrome[PATH]

driver.get["//demo.guru99.com/test/newtours/"]

try:

user_name = driver.find_element_by_name["userNam"]

user_name.send_keys["mercury"]

except NoSuchElementException:

print["exception handled"]

password = driver.find_element_by_name["password"]

submit = driver.find_element_by_name["submit"]

password.send_keys["mercury"]

submit.click[]

THẺ LIÊN QUAN

Selen

Python

HTML

cộng đồng

Người đóng góp

Gutha Vamsi Krishna

Làm thế nào để bạn xử lý không có phần tử như vậy không thể xác định vị trí một phần tử?

Ngoại lệ xảy ra khi WebDriver không thể tìm và xác định vị trí các yếu tố.Thông thường, điều này xảy ra khi người kiểm tra viết Trình định vị phần tử không chính xác trong phương thức FindEuity [By, By].Với các không gian và xác minh bằng cách sử dụng XPath, chúng ta có thể tránh ngoại lệ này.with the spaces and verify using Try XPath then we can avoid this exception.

Làm thế nào để giải quyết Nosuchelementexception trong Selenium Python?

1. Thay đổi mã nguồn của trang web.Có thể mã nguồn của trang web có thể đã được thay đổi kể từ lần cuối cùng bạn truy cập.Thay đổi mã của bạn theo nguồn mới để giải quyết vấn đề.Change in source code of the webpage. It's possible that the source code of the webpage may have been changed since the last time you accessed it. Change your code according to the new source to solve the issue.

Bài Viết Liên Quan

Chủ Đề