पायथन में सेलेनियम वेबड्राइवर के साथ पाठ कैसे प्राप्त करें


92

मैं सेलेनियम वेबड्राइवर का उपयोग करके पाठ प्राप्त करने की कोशिश कर रहा हूं और यहां मेरा कोड है। कृपया ध्यान दें कि मैं XPath का उपयोग नहीं करना चाहता हूं, क्योंकि मेरे मामले में आईडी वेब पेज के प्रत्येक रिले पर बदल जाती है।

मेरा कोड:

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>

मैं इसे कैसे ठीक करूं?


यदि अंतःक्रियात्मक रूप से किया जाता है, तो परिणाम कुछ इस तरह हो सकता है कि त्रुटि संदेश "एट्रीब्यूटरोर: 'वर्तमान-चरण' ऑब्जेक्ट में कोई विशेषता नहीं है 'getText'"
पीटर मोर्टेंसन

जवाबों:


166

आप बस चाहते हैं .text

फिर आप यह पुष्टि कर सकते हैं के बाद आप इसे मिल गया है, तुम क्या में पारित करने के लिए प्रयास नहीं करते उम्मीद यह होना चाहिए।


Im को यह त्रुटि मिल रही है - 'WebDriver' ऑब्जेक्ट में कोई विशेषता नहीं है '
getText

1
@ user3121891, यह .text
अरन

अब Im इस कोड का उपयोग कर रहा है: Driver.find_element_by_class_name ("वर्तमान-चरण")। पाठ ("मेरा पाठ") यदि पाठ: "पास" को और प्रिंट करें: "विफल" प्रिंट करें और यह त्रुटि प्राप्त कर रहा है - 'यूनिकोड "ऑब्जेक्ट कॉल करने योग्य नहीं है
user3121891

13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... इस पर सिर्फ पाठ । और कुछ नहीं।
अरन

1
आप सेलेनियम वस्तुओं की सूची के माध्यम से लूप करना चाहते हैं और लूप के .textप्रत्येक आइटम पर लागू होते हैं ।
पॉल

72

अजगर

element.text

जावा

element.getText()

सी#

element.Text

माणिक

element.text

1
मैं पायथन के लिए इस पर कोई दस्तावेज नहीं खोज सकता, आप लोग इसे कहां ढूंढ रहे हैं?
अमोन

1
@CharlesSmith यदि आप .VSCode में तत्व के बाद डालते हैं, तो आपको कक्षा की स्वीकार्यता के आधार पर सुझावों की एक सूची दी जाएगी। मुझे यही मिला।
कोडस्पेक्ट

1
हां मैंने IntelliJ में वही देखा, बस सोच रहा था कि यह डॉक्स में क्यों नहीं है
Amon

1
@ क्रिस स्मिथ: यह वेब तत्व पर है , सब सेक्शन "गेट एलीमेंट टेक्स्ट" (पेज के निचले भाग पर)। छह अलग-अलग भाषाएं हैं और डिफ़ॉल्ट जावास्क्रिप्ट के लिए है। अजगर कोड उदाहरण देखने के लिए "पायथन" पर क्लिक करें ।
पीटर मोर्टेंसन


6

आप उपयोग कर सकते हैं:

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

यह तत्व के भीतर पाठ लौटाएगा और आपको इसके बाद सत्यापित करने की अनुमति देगा।


3

यह सही जवाब है। इसने काम कर दिया!!

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 Successfully")
driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").click()
SpecialPrice = driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").text
print(SpecialPrice)

0

कस्टम क्लास में किसी चीज़ को हथियाने या आईडी बदलने में असमर्थ होने पर मैंने इसे बिल्कुल अमूल्य पाया है:

driver.find_element_by_xpath("//*[contains(text(), 'Show Next Date Available')]").click()
driver.find_element_by_xpath("//*[contains(text(), 'Show Next Date Available')]").text
driver.find_element_by_xpath("//*[contains(text(), 'Available')]").text
driver.find_element_by_xpath("//*[contains(text(), 'Avail')]").text

क्या आप बता सकते हैं कि यह बिल्कुल अमूल्य क्यों है?
पीटर मोर्टेंसन

क्यों .click()जरूरी है? तीन रेखाएँ क्यों होती हैं .text?
पीटर मोर्टेंसन

प्रश्न ने कहा "कृपया ध्यान दें कि मैं XPath का उपयोग नहीं करना चाहता"
पीटर मोर्टेंसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.