Hướng dẫn get text in span selenium python - lấy văn bản trong span selen python

Điều này sẽ dễ dàng, nhưng tôi không thể làm cho nó hoạt động. Tôi đang chạy một bản demo nhỏ bằng cách sử dụng trang chủ Google làm bài kiểm tra.

Đây là kịch bản của tôi:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Chrome()
browser.get("http://www.google.com") # Load page

time.sleep(0.2)

#top nav elements
elems = browser.find_elements_by_xpath("//span[contains(@class, 'gbts')]") 

for e in elems:
    print e.get_attribute('text')

browser.close()

Nó trở lại:

None
None
None
None
None
None
None
None
None
None
None

Vì vậy, tôi nghĩ rằng nó đang lấy các yếu tố đúng, nhưng có lẽ không phải là thuộc tính đúng? Không chắc. Tôi cũng đã cố gắng in e.text () nhưng đó là nhổ ra:

Traceback (most recent call last):
  File "sample.py", line 14, in 
    print e.text()
TypeError: 'unicode' object is not callable

Bất kỳ suy nghĩ?

*Chỉnh sửa - Giải pháp có thể? *

e.get_attribute('innerHTML') seems to work.

Làm cách nào để tìm phần tử với văn bản "Jessica" dựa trên "3000" hiển thị trong trang web bằng XPath?

Tôi đang gặp ... không phải là lỗi XPath hợp lệ.

Jessica

3000

Tôi đã thử điều này

RichestPersonName = browser.find_element_by_xpath("//p[text()='3000'] .. /span").text

Nhưng nó cho thấy

selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression //p[text()='3000'] .. /span because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//p[text()='3000'] .. /span' is not a valid XPath expression.

Hướng dẫn get text in span selenium python - lấy văn bản trong span selen python

hỏi ngày 21 tháng 7 năm 2021 lúc 10:13Jul 21, 2021 at 10:13

Hướng dẫn get text in span selenium python - lấy văn bản trong span selen python

Tôi đã thử điều này và nó hoạt động. Quản lý để có được 'Jessica'

RichestPersonName = browser.find_element_by_xpath("//p[text()='3000']/preceding-sibling::span").text

Đã trả lời ngày 22 tháng 7 năm 2021 lúc 1:59Jul 22, 2021 at 1:59

Bạn nên sử dụng tùy chọn preceding-sibling XPath:

//p[text=()='3000']/preceding-sibling::span

Đã trả lời ngày 21 tháng 7 năm 2021 lúc 10:34Jul 21, 2021 at 10:34

Hướng dẫn get text in span selenium python - lấy văn bản trong span selen python

Mate Mršemate MršeMate Mrše

4.0793 Huy hiệu vàng20 Huy hiệu bạc48 Huy hiệu đồng3 gold badges20 silver badges48 bronze badges

2

Bằng cách chọn cách tiếp cận chính xác của việc tạo trình định vị có thể làm cho bất kỳ khung tự động hóa hiệu quả hơn. XPath là một trong những tùy chọn có sẵn để định vị bất kỳ phần tử nào trong các trang web HTML phức tạp. Với sự trợ giúp của XPath, người kiểm tra có thể tìm thấy phần tử chính xác bằng cách điều hướng qua các hệ thống phân cấp khác nhau của trang web. Giống như bằng cách sử dụng, bất kỳ chức năng nào trong số này: chứa, anh chị em và cha mẹ, v.v.

Trong các kịch bản đặc biệt trong đó phần tử cần được đặt bằng cách tham khảo một yếu tố khác, bất kỳ công ty kiểm tra chuyên nghiệp nào đều thích các kỹ thuật động là chọn phần tử trên trang web bằng cấu trúc HTML DOM thay vì làm cho nó được mã hóa khó khăn.

Ba cách có thể để định vị phần tử mong muốn trong trường hợp của bạn được đưa ra dưới đây:

  1. None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    
    0

  2. None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    
    1

  3. None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    
    2

Các cách tiếp cận này sẽ tìm thấy nhịp nút cần thiết với văn bản 'Jessica' bằng cách điều hướng qua các yếu tố khác.

Kate Paulk ♦

Phù bằng vàng 31K852 Huy hiệu bạc108 Huy hiệu đồng8 gold badges52 silver badges108 bronze badges

Đã trả lời ngày 23 tháng 7 năm 2021 lúc 9:33Jul 23, 2021 at 9:33

AnandanandAnand

7204 Huy hiệu bạc8 Huy hiệu đồng4 silver badges8 bronze badges