পাইথনে সেলেনিয়াম ওয়েবড্রাইভারের মাধ্যমে কীভাবে পাঠ্য পাবেন


92

আমি সেলেনিয়াম ওয়েবড্রাইভার ব্যবহার করে পাঠ্য পাওয়ার চেষ্টা করছি এবং এখানে আমার কোড। দয়া করে মনে রাখবেন যে আমি এক্সপথটি ব্যবহার করতে চাই না, কারণ আমার ক্ষেত্রে ওয়েব পৃষ্ঠার প্রতিটি পুনরায় লঞ্চে আইডি পরিবর্তন হয়।

আমার কোড:

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

এইচটিএমএল:

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

আমি এটা কিভাবে ঠিক করবো?


যদি ইন্টারেক্টিভভাবে সম্পন্ন করা হয়, ফলাফল ত্রুটি বার্তার মতো কিছু হতে পারে "অ্যাট্রিবিউটআরার: 'বর্তমান পর্যায়ে' অবজেক্টটির কোনও 'গেটটেক্সট' নেই"
পিটার মর্টেনসেন

উত্তর:


166

আপনি ঠিক চান .text

তারপরে এটি পাওয়ার পরে আপনি এটি যাচাই করতে পারেন , যা আশা করা উচিত তা পাস করার চেষ্টা করবেন না ।


আমি এই ত্রুটিটি পেয়ে
যাচ্ছি

4
@ ব্যবহারকারী3121891, এটি .text
Arran

এখন আমি এই কোডটি ব্যবহার করছি: ড্রাইভার.ফাইন্ড_এলিমেন্ট_বি_ক্লাস_নাম ("বর্তমান স্তর")। পাঠ্য ("আমার পাঠ্য") পাঠ্য থাকলে: "পাস" মুদ্রণ করুন অন্য: মুদ্রণ "ব্যর্থ" এবং এই ত্রুটিটি পেয়ে - 'ইউনিকোড' অবজেক্টটি কলযোগ্য নয়
user3121891

13
@ ব্যবহারকারী3121891 driver.find_element_by_class_name("current-stage").text.... কেবল এটির নিজস্ব পাঠ্যআর কিছু না।
Arran

4
আপনি সেলেনিয়াম অবজেক্টের তালিকার মধ্য দিয়ে লুপটি পেতে চান এবং লুপের .textজন্য প্রতিটি আইটেমটিতে প্রয়োগ করতে পারেন ।
পল

72

পাইথন

element.text

জাভা

element.getText()

সি #

element.Text

রুবি

element.text

4
পাইথনের জন্য আমি এখানে কোনও ডকুমেন্টেশন পাচ্ছি না, ছেলেরা কোথায় এটি সন্ধান করছে?
আমন

4
@ চারলেস্মিথ যদি আপনি ভিএসকোডে .উপাদানটির পরে কিছু রাখেন তবে শ্রেণি কী গ্রহণ করবে তার ভিত্তিতে আপনাকে পরামর্শের একটি তালিকা দেওয়া হবে। এই আমি এটি খুঁজে পেয়েছি।
কোডস্পেন্ট

4
হ্যাঁ আমি ইন্টেলিজেও একই জিনিসটি লক্ষ্য করেছি, কেবল ডক্সে নেই কেন তা ভাবছিলাম
আমোন

4
@ চারেলস স্মিথ: এটি ওয়েব উপাদানটিতে রয়েছে , উপ-বিভাগ "এলিমেন্ট টেক্সট পান" (পৃষ্ঠার নীচে)। ছয়টি আলাদা ভাষা রয়েছে এবং জাভাস্ক্রিপ্টের জন্য ডিফল্ট। পাইথন কোড উদাহরণটি দেখতে "পাইথন" এ ক্লিক করুন ।
পিটার মর্টেনসেন


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?
পিটার মর্টেনসেন

প্রশ্নটি বলেছিল "দয়া করে মনে রাখবেন যে আমি এক্সপথ ব্যবহার করতে চাই না"
পিটার মর্টেনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.