2017-01-13 3 views
0

Я читаю fb для обучения.Получение нескольких кнопок с тем же именем класса (selenium python)

Я пишу следующие строки, но не могу найти кнопку на странице. (Я не хочу использовать HREF, потому что HREF будет отличаться для разных Fb сообщений)

likeButton = driver.wait.until(EC.presence_of_element_located(
      (By.CLASS_NAME, "_2e4w nowrap"))) 
likeButton[0].click #this code is never reached 

, и я попытался это, а

likeButton = driver.wait.until(EC.presence_of_element_located(
      (By.CSS_SELECTOR, "._2e4w.nowrap"))) 

ответ

0

Я предполагаю, что вы слом HTML , поэтому, пожалуйста, скажите мне, если это не так.

Названия классов в HTML не уникальны. Несколько объектов в HTML могут иметь одно и то же имя класса, но в целом несколько вещей не будут иметь одинакового id. id, как правило, уникальны.

<thing id="some_id"></thing> 

вместо

<thing class="some_class"></thing> 

Я хотел бы использовать классы, чтобы сузить поиск, а затем выберите с id с.

Кроме того, если есть CSS селекторы, которые выбирают классы, они выглядят примерно так:

.some_class { 
    //some css 
    color: example_color; 
} 

Если они основаны на id-х они выглядят что-то как этот

#some_id { 
    //some css 
    color: example_color; 
} 

EDIT:

Я также убежден, что он ищет одно имя класса. Я также хотел бы попробовать что-то вроде:

likeButton = driver.wait.until(EC.presence_of_element_located(
      (By.CLASS_NAME, "_2e4w"))) 

Если вы хотите nowrap, а также, там, наверное, способ выбрать несколько имен классов. Я бы не ожидал, что _2e4w.nowrap будет работать.

+0

да это это HTML-файл. , и проблема в том, что он не может обнаружить кнопку через «имя класса» – HassanK

+0

, что произойдет, если вы 'pprint (likeButton)'. Является ли объект «Нет»? – 1N5818

+0

он никогда не достигает этой части. потому что код ждет, пока кнопка типа будет отображаться. – HassanK

0

входной строки должны быть «_2e4w» не «_2e4w Nowrap» это две отдельные классы

Чтобы получить список кнопок «наличие всех элементов, расположенных» необходимо использовать

likeButton = driver.wait.until(EC.presence_of_all_elements_located(
     (By.CLASS_NAME, "_2e4w"))) 
Смежные вопросы