मैंने क्रोम सामान्य मोड में पाइथन सेलेनियम के साथ अपनी स्वचालित स्क्रिप्ट समाप्त कर ली है और सब कुछ बढ़िया काम करता है।
जब तक मैंने इसे हेडलेस मोड में काम करने का फैसला नहीं किया, तब तक मैं आंशिक लिंक टेक्स्ट का पता नहीं लगा सकता जो पहले से ही सामान्य मोड में काम करता है।
मैं इस कोड का उपयोग हेडलेस में क्रोम खोलने के लिए कर रहा हूं।
option = webdriver.ChromeOptions()
option.headless = True
option.AddArgument("window-size=1200,700");
यह वह कोड है जिसका उपयोग मैं तत्व का पता लगाने के लिए करता हूं
tmp = True
while tmp:
try:
Confirmm = driver.find_element_by_partial_link_text('Confirm')
Confirmm.click()
tmp = False
except:
continue
और यह उस लिंक टेक्स्ट का कोड है जिसे मैं क्लिक करने का प्रयास कर रहा हूं
<a href="https://temp-mail.org/en/view/346e2949a4a1f77ededd7542ba7947ed" title="" class="viewLink title-subject" data-mail-id="346e2949a4a1f77ededd7542ba7947ed">Confirm your profile</a>
नोट: डेटा-मेल-आईडी= स्थिर नहीं है और हर बार बदलता है।
मैंने जावास्क्रिप्ट का उपयोग करने की कोशिश की, लेकिन जिस शब्द पर मैं क्लिक करना चाहता हूं, उसका कोई आईडी, नाम या TAG-NAME नहीं है, और क्लासनाम भी काम नहीं करता है।
कुछ पता है इसे कैसे हल करना है?
2 जवाब
अपनी प्रोफ़ाइल की पुष्टि करें के रूप में टेक्स्ट वाले तत्व पर क्लिक करने के लिए आप निम्न में से किसी एक का उपयोग कर सकते हैं लोकेटर रणनीतियां:
link_text
का उपयोग करना:driver.find_element_by_link_text("Confirm your profile").click()
partial_link_text
का उपयोग करना:driver.find_element_by_partial_link_text("Confirm").click()
css_selector
का उपयोग करना:driver.find_element_by_css_selector("a.viewLink.title-subject[href^='https://temp-mail.org/en/view']").click()
xpath
का उपयोग करना:driver.find_element_by_xpath("//a[@class='viewLink title-subject' and starts-with(@href, 'https://temp-mail.org/en/view')][contains(., 'Confirm your profile')]").click()
आदर्श रूप से, उस तत्व पर क्लिक करने के लिए जिसे आपको प्रेरित करने की आवश्यकता है WebDriverWait element_to_be_clickable()
के लिए और आप निम्न में से किसी एक का उपयोग कर सकते हैं लोकेटर रणनीतियां:
LINK_TEXT
का उपयोग करना:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Confirm your profile"))).click()
PARTIAL_LINK_TEXT
का उपयोग करना:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Confirm"))).click()
CSS_SELECTOR
का उपयोग करना:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.viewLink.title-subject[href^='https://temp-mail.org/en/view']"))).click()
XPATH
का उपयोग करना:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='viewLink title-subject' and starts-with(@href, 'https://temp-mail.org/en/view')][contains(., 'Confirm your profile')]"))).click()
नोट: आपको निम्नलिखित आयात जोड़ने होंगे:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
पृष्ठ का स्क्रीन शॉट प्राप्त करने का प्रयास करें और सत्यापित करें कि लिंक उपलब्ध है या नहीं। कभी-कभी वेबसाइटें हेडलेस ब्राउजर का पता लगा लेती हैं और वेबसाइट को अलग तरह से प्रदर्शित करती हैं।
driver.get_screenshot_as_file(f"screenshot.png")
यदि प्रदर्शित वेबसाइट अलग है तो कस्टम कस्टम हेडर सेट करें (जैसा कि वेबसाइट को पता चलता है कि ब्राउज़र उपयोगकर्ता के उपयोग से बिना सिर के है):
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--window-size=1920,1080")
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument(
"user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
browser = webdriver.Chrome(options=options)
वेबड्राइवर प्रतीक्षा का भी उपयोग करें:
WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Confirm"))).click()
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।