2016-08-22 1 views
0

Я пытаюсь использовать элементы поиска от http://selenium-python.readthedocs.io/locating-elements.html#locating-elements-by-class-name; однако они, похоже, работают только в половине случаев и обычно на более простых сайтах. Мне интересно, почему это так. Например, в настоящее время я пытаюсь найти:Проблемы, связанные с поиском элементов в python selenium

<a class="username" title="bruceleenation" href="/profile/u/3618527996"></a> 

с помощью:

content = driver.find_element_by_class_name('username') 

, но я не получаю ничего. HTML от

https://gyazo.com/b2a0d389da26bbd325baaa5f915d0569 или

<body> 

    <nav id="nav-sidebar" class="nav-main"></nav> 
    <main id="page-content" class="" style="margin-right: 17px; margin-bottom: 0px;"> 
    <header class="header-logged"></header> 
    <section class="page-content-wrapper"></section> 
    <section class="media-slider" style="display: block;"> 
     <div class="close-slider"></div> 
     <section id="slider" class="open" style="display: inline-block;"> 
      <a class="go-back" data-media-id="1322612612609855850_3618527996" title="Back to all media" href="javascript:void(0);"></a> 
      <section class="media-viewer-wrapper viewer" data-count-comments="0" data-count-likes="1" data-url-delete="/aj/d" data-url-comment="/aj/c" data-url-unlike="/aj/ul" data-url-like="/aj/l" data-user-id="3618527996" data-media-id="1322612612609855850_3618527996"> 
       <section class="mobile-user-info"></section> 
       <section class="desktop-wrapper"> 
        <section class="user-image-wrapper"> 
         <div class="image-like-click"></div> 
         <a class="user-image-shadow" href="javascript:void(0);"> 
          <img class="user-image" alt="" src="https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.0…493235_n.jpg?ig_cache_key=MTMyMjYxMjYxMjYwOTg1NTg1MA%3D%3D.2"></img> 
         </a> 
         <section class="image-actions-wrapper dropdown-anchor"></section> 
        </section> 
        <section class="media-viewer-info ui-front"> 
         <section class="user-info-wrapper text-translate-parent-wrapper "> 
          <a class="user-avatar-wrapper profile" title="bruceleenation" href="/profile/u/3618527996"></a> 
          <section class="user-info"> 
           <a class="username" title="bruceleenation" href="/profile/u/3618527996"> 

            bruceleenation 

           </a> 
           <p class="full-name"></p> 
           <div class="media-date-geo"> 
            <span></span> 
           </div> 
          </section> 

Любые предложения о том, что делать? Я тоже пробовал Xpath. ["//a[@class='username'"]

+0

Вы уверены, что элемент присутствует в то время вы смотрите на это? Для страниц довольно часто менять их содержимое на лету. –

+0

Кроме того, вы пробовали выполнить time.sleep (N)? Часто, если страницы сложны, они могут занять некоторое время, и некоторые компоненты сразу не попадают на страницу. –

ответ

0

Вы должны попробовать использовать WebDriverWait подождать, пока элемент не представляет, как показано ниже: -

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

content = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.username[title = 'bruceleenation']"))) 
Смежные вопросы