codememo

Python에서 Selenium WebDriver로 텍스트를 얻는 방법

tipmemo 2023. 7. 17. 21:09
반응형

Python에서 Selenium WebDriver로 텍스트를 얻는 방법

셀레늄 웹드라이버를 사용하여 텍스트를 얻으려고 하는데 여기 제 코드가 있습니다.저의 경우 웹 페이지를 다시 시작할 때마다 ID가 변경되기 때문에 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>

이걸 어떻게 고칠 수 있을까요?

당신은 단지 원합니다..text.

그런 다음 데이터를 얻은 후에 확인할 수 있습니다. 데이터가 있어야 한다고 생각을 전달하려고 하지 마십시오.

파이썬

element.text

자바

element.getText()

C#

element.Text

루비

element.text

텍스트를 인쇄하려면 다음 로케이터 전략 중 하나를 사용할 수 있습니다.

  • class_name 사용 및get_attribute("textContent"):

    print(driver.find_element(By.CLASS_NAME, "current-stage").get_attribute("textContent"))
    
  • css_selector 사용 및get_attribute("innerHTML"):

    print(driver.find_element(By.CSS_SELECTOR, "span.current-stage").get_attribute("innerHTML"))
    
  • xpath텍스트 속성 사용:

    print(driver.find_element(By.XPATH, "//span[@class='current-stage']").text)
    

이상적으로 당신은 웹드라이버를 유도해야 합니다.visibility_of_element_located()다음 로케이터 전략 중 하나를 사용할 수 있습니다.

  • CLASS_NAME 사용 및get_attribute("textContent"):

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, "current-stage"))).get_attribute("textContent"))
    
  • CSS_SELECTOR 및 텍스트 속성 사용:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.current-stage"))).text)
    
  • XPATH 사용 및get_attribute("innerHTML"):

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='current-stage']"))).get_attribute("innerHTML"))
    
  • 참고: 다음 가져오기를 추가해야 합니다.

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Selenium - Python을 사용하여 웹 요소의 텍스트를 검색하는 방법에서 관련 토론을 찾을 수 있습니다.


레퍼런스

유용한 설명서 링크:

답은 다음과 같습니다.

driver.find_element_by_class_name("ctsymbol").text

사용할 수 있는 항목:

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

이렇게 하면 요소 내의 텍스트가 반환되고 이후에 확인할 수 있습니다.

이것이 정답입니다.효과가 있었어요.

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)

A는 셀레늄 4 업데이트 후 이 스레드를 찾는 모든 사람을 위해 안내합니다.기사님.find_discovery_by_*가 더 이상 사용되지 않으며 이를 사용하면 "사용되지 않음 경고"가 표시됩니다.교체 방법은 드라이버입니다.find_element(By.X,name") 셀레늄 4 정보를 찾아보세요.

사용자 지정 클래스에서 무언가를 잡을 수 없거나 ID를 변경할 때 매우 유용하다는 것을 알게 되었습니다.

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

요소에서 텍스트 가져오기:

url=driv.find_element(By.whatDoYouWant, "ClassNameOrwhatDoYouWant").text
print(url)

ex:

url = web.find_element(By.TAG_NAME, "a").text
print(url)

요소에서 텍스트 가져오기:

ex:

for i in range(6):
    var = web.find_elements(By.TAG_NAME, "input")[i].text
    print(var)

언급URL : https://stackoverflow.com/questions/20996392/how-to-get-text-with-selenium-webdriver-in-python

반응형