Как распечатать частичный текст из элемента с помощью Selenium и Python - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь получить текст «Альбом Vol.1 [Каждое письмо, которое я вам отправлял] LP (Обычное издание)» от http://www.ktown4u.com/iteminfo?grp_no=231307&goods_no=44363#dt_wrap01 на вкладке описания, но я продолжаю получать это сообщение об ошибке.

selenium.common.exceptions.NoSuchElementException:
Message: no such element: Unable to locate element: 
{"method":"xpath","selector":".//div[@class='view_body']/div[2]/span"}

Различные варианты дают мне похожие сообщения об ошибках.

driver.find_element_by_css_selector('.view_body>div:nth-child(2)>span')
driver.find_element_by_xpath(".//div[@class='view_body']/div[2]/span")
driver.find_element_by_tag_name('span')

Я также пробовал driver.implicitly_wait(10) безрезультатно.

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Чтобы напечатать текст Альбом Vol.1 [Каждое письмо, которое я вам отправлял] LP (Обычное издание) , вы должны вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать любой из следующих стратегий локатора :

  • Использование CSS_SELECTOR:

    driver.get('http://www.ktown4u.com/iteminfo?grp_no=231307&goods_no=44363#dt_wrap03')
    print(re.split('[*\-]',WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.payment-order-list>ul>li"))).text)[1])
    
  • Использование XPATH:

    driver.get('http://www.ktown4u.com/iteminfo?grp_no=231307&goods_no=44363#dt_wrap03')
    print(re.split('[*\-]',WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='payment-order-list']/ul/li"))).text)[1])
    
  • Вывод в консоль:

    Album Vol.1 [Every letter I sent you] LP (Normal Edition)
    
  • Примечание : вам необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 16 июня 2020

С этим xpath:

'//div[@id="contents"]/div/div/div[2]/span'

Тест в инструментах разработчика:

$x('//div[@id="contents"]/div/div/div[2]/span')[0].textContent
"Album Vol.1 [Every letter I sent you] LP (Normal Edition)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...