Cách nhận văn bản bằng trình điều khiển web selen trong python


88

Tôi đang cố lấy văn bản bằng trình điều khiển web selen và đây là mã của tôi. Xin lưu ý rằng tôi không muốn sử dụng Xpath, vì trong trường hợp của tôi, id sẽ thay đổi mỗi khi khởi chạy lại trang web, vui lòng giúp đỡ.

mã của tôi:

text=driver.find_element_by_class_name("current-stage").getText("my text")

HTML:

<span class="current-text" id="yui_3_7_0_4_1389185744113_384">my text</span>

Câu trả lời:


160

Bạn chỉ muốn .text.

Sau đó, bạn có thể xác minh nó sau khi bạn đã có nó, đừng cố gắng vượt qua những gì bạn mong đợi nó phải có.


Im nhận được lỗi này - 'WebDriver' đối tượng không có thuộc tính 'gettext'
user3121891

1
@ user3121891, nó .text.
Arran

Bây giờ tôi đang sử dụng mã này: driver.find_element_by_class_name ("current-stage"). Text ("my text") if text: print "pass" else: print "Fail" và gặp lỗi này - đối tượng 'unicode' không thể gọi được
user3121891

13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... chỉ văn bản trên riêng của nó. Không có gì khác.
Arran

1
Bạn sẽ muốn lặp lại danh sách các đối tượng selen và áp dụng cho .texttừng mục của vòng lặp for.
Paul

68

Python

element.text

Java

element.getText()

C #

element.Text

Ruby

element.text

1
Tôi không thể tìm thấy bất kỳ tài liệu nào về vấn đề này cho Python, các bạn tìm tài liệu này ở đâu?
Charles Smith

1
@CharlesSmith nếu bạn đặt .sau phần tử trong VSCode, bạn sẽ nhận được danh sách các đề xuất dựa trên những gì lớp chấp nhận. Đó là cách tôi tìm thấy điều này.
CodeSpent

1
Có, tôi nhận thấy sự giống nhau trong IntelliJ, chỉ thắc mắc tại sao nó không có trong các tài liệu
Charles Smith

9

Tìm thấy rồi, câu trả lời là

driver.find_element_by_class_name("ctsymbol").text

6

Bạn có thể dùng:

element = driver.find_element_by_class_name("class_name").text

Thao tác này sẽ trả về văn bản bên trong phần tử và cho phép bạn xác minh nó sau đó.


3

Cảm ơn đây là câu trả lời chính xác nó đã hoạt động !!

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome("E:\\Python\\selenium\\webdriver\\chromedriver.exe")
driver.get("https://www.tatacliq.com/global-desi-navy-embroidered-kurta/p-mp000000000876745")
driver.set_page_load_timeout(45)
driver.maximize_window()
driver.implicitly_wait(2)
driver.get_screenshot_as_file("E:\\Python\\Tatacliq.png")
print ("Executed Succesfull")
driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").click()`enter code here`
SpecialPrice =driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").text
print(SpecialPrice)

0

Tôi thấy điều này hoàn toàn vô giá khi không thể lấy thứ gì đó trong lớp tùy chỉnh hoặc thay đổi id:

driver.find_element_by_xpath ("// [chứa (text (), 'Hiển thị ngày tiếp theo có sẵn')]"). click () driver.find_element_by_xpath ("// [chứa (text (), 'Hiển thị ngày tiếp theo có sẵn')] ") .text driver.find_element_by_xpath (" // [chứa (text (), 'Có sẵn')] "). text driver.find_element_by_xpath (" // [chứa (text (), 'Avail')] "). text


Có thể bạn có thể đánh dấu mã của mình là mã bằng cách sử dụng điểm đánh dấu `` '.
Vivian De Smedt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.