2016-08-04 2 views
0

Я пытаюсь получить доступ к текстовому полю комментария в общем сообщении huffington post artical. Когда я правая кнопка мыши элемент инспектировать я получаю следующий HTML-код:Невозможно выбрать текстовое поле в selenium

<div class="UFIInputContainer"> 
<div class="_1cb _5yk1"> 
    <div class="_5yk2" tabindex="-2"> 
    <div class="_5rp7"> 

с линией <div class="_1cb _5yk1"> выделенной.

from selenium import webdriver 
driver = webdriver.Chrome() 
''' 
Just pretend that I put in some code to log in to facebook 
so I can actually post a comment on huffington post 
''' 
driver.get.('http://www.huffingtonpost.com/entry/worst-suicide-squad-reviews_us_57a1e213e4b0693164c34744?') 
''' 
Just a random artical about a movie 
''' 
comment_box = driver.find_element_by_css_selector('._1cb._5yk1') 
''' 
since this is a compound class I think I should use find_by_css_selector 
''' 

Когда я запускаю это, я получаю сообщение об ошибке: «такой элемент не найден». Я пробовал другие методы, чтобы попытаться удержать текстовое поле комментария, но я получаю то же сообщение об ошибке, и я теряю доступ к нему. Я надеюсь, что кто-то может пролить свет на эту проблему.

редактировать: Это более полный HTML код:

<html lang="en" id="facebook" class="svg "> 
<head>...</head> 
    <body dir="ltr" class="plugin chrome webkit win x1 Locale_en_US"> 
    <div class="_li"> 
    <div class="pluginSkinLight pluginFontHelvetica"> 
    <div id="u_0_0"> 
     <div data-reactroot class="_56q9"> 
     <div class="_2pi8"> 
     <div class="_491z clearfix">...</div> 
     <div spacing="medium" class="_4uyl _1zz8 _2392 clearfix" direction="left"> 
      <div class="_ohe lfloat">...</div> 
      <div class> 
      <div class="UFIInputContainer"> 
      <div class="_1cb _5yk1"> 
      <div class="_5yk2" tabindex="-2"> 
       <div class="_5rp7"> 
      </div> 
      </div> 
      <div class="UFICommentAttachmentButtons clearfix">...</div> 
      <!-- react-empty: 39 --> 
      <div class="_4uym">...</div> 
      </div> 
      </div> 
     </div> 
     ::after 
+0

HTML, не показывает вещи о флажке, не могли бы вы поделиться еще несколько строками, в которых вы видите тег 'input'. –

+0

Я просмотрел код HTML и не смог найти входной тег в соседнем коде. –

ответ

0

Вы должны переключиться на фрейм, содержащий текстовое поле. Попробуйте следующий подход, он должен работать: При нажатии кнопки комментариев загрузки может потребоваться первым, если кнопка нагрузки комментария отображается

load_comment = driver.find_element_by_css_selector('.comment-button.js-comment-button') 
load_comment.click() 
driver.switch_to_frame(driver.find_element_by_css_selector('.fb_ltr.fb_iframe_widget_lift')) 
comment_box = driver.find_element_by_css_selector('._1cb._5yk1') 
comment_box.send_keys('Test') 
+0

Спасибо. Код приближает меня. Когда я вхожу в команду: comment_box.click(), она выводит курсор в поле комментария, но когда я отправляю команду: comment_box.send_keys ('Test'), я получаю ошибку: не могу сфокусировать элемент. –

+0

Попробуйте напрямую отправить текст в comment_box без '.click()'. – Amit

+0

К сожалению, я все равно получаю сообщение об ошибке. –

Смежные вопросы