Как найти элемент и извлечь innerText, используя Selenium и Python - PullRequest
0 голосов
/ 17 января 2020
<span class="chr-UserDropdownItem-imageAndText">
    <img class="chr-UserDropdownItem-image" src="/slm/profile/image/264023573852/24.sp?version=1" alt="User Profile Avatar">
    <span class="smb-DropdownItem-text">
        <span>   test user   </span>
    </span>
</span>

Посмотрев на скриншот выше, пожалуйста, помогите мне извлечь innerText тестового пользователя уникально из тега span .

Ответы [ 4 ]

1 голос
/ 17 января 2020

Чтобы извлечь текст тестовый пользователь , вам нужно вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать любую из следующих Стратегий локатора :

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

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.smb-DropdownItem-text>span"))).get_attribute("innerHTML"))
    
  • Использование XPATH и text атрибут:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "span[@class='smb-DropdownItem-text']>span"))).text)
    
  • Примечание : необходимо добавить следующие операции импорта:

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

Вы можете попробовать с нижеуказанным xpath.

//img[contains(@src, '/profile/image/')]]/following-sibling::span
0 голосов
/ 18 января 2020

Вы можете использовать XPath для удаления пробелов:

driver.find_element_by_xpath('//span/text()[normalize-space()="test user"]')

Если в теге span нет пробелов, используйте XPath следующим образом:

driver.find_element_by_xpath('//span[contains(text(), "test user")]')

Для динамически:

driver.find_element_by_xpath('//span[contains(text(), "' . $HereIsSetYourDynamicallyVaribleName . '")]')
0 голосов
/ 17 января 2020

Вы можете найти элемент, используя xpath:

driver.find_element_by_xpath("//span[@class='smb-DropdownItem-text']//span[contains(text(),'test user')]");
...