2016-11-23 5 views
1

Я использую phantomjs версии 1.1.0 и phantomjs-2.1.1.exe для windows.Элемент не найден на phantomjs Но работает отлично на хроме

CONTINUE ACTIVATED

Это HTML код

<div class="right-align" style="display: inline-block; vertical-align: middle; border-radius: 6px; margin-left: 20px; flex-grow: 100;"> 
<div> 
<a class="t-next-pd continue-to-query button-text" style="background-color: rgb(11, 197, 216); color: rgb(255, 255, 255); height: 40px; padding: 0px 16px; text-decoration: none; display: inline-flex; font-weight: 500; font-size: 16px; border-radius: 4px; z-index: 100; cursor: pointer; align-items: center; justify-content: center; border: 1px solid rgb(11, 197, 216); width: 100%;"> 
<span style="display: inline-block;">CONTINUE</span> 
</a> 
</div> 
</div> 

Я пытался найти элемент, используя

  1. относительно XPath для обоих классов: .//*[@class='t-next-pd continue-to-query button-text'], .//*[@class='right-align']
  2. текстом
  3. частичного текст
  4. по ссылке
  5. по CSSSelector
  6. по отношению XPath с текстом
  7. По абсолютному XPath (Последний приоритет)
  8. По ClassName
  9. Javascript исполнитель
  10. Неявных ожиданий и неявных ожидания

НИЧЕГО НЕ МОЖЕТ РАБОТАТЬ

Кнопка CONTINUE активируется только при вводе имени и возраста. Это код, когда кнопка ПРОДОЛЖИТЬ не активирована.

<div class="right-align" style="display: inline-block; vertical-align: middle; border-radius: 6px; margin-left: 20px; flex-grow: 100;"> 
<div> 
<a class="button-text" disabled="" style="background-color: rgb(199, 199, 199); color: rgb(255, 255, 255); height: 40px; padding: 0px 16px; display: inline-flex; text-decoration: none; font-weight: 500; font-size: 16px; border-radius: 4px; z-index: 100; cursor: pointer; align-items: center; justify-content: center; width: 100%;"> 
<span style="display: inline-block;">CONTINUE</span> 
</a> 
</div> 
</div> 

CONTINUE DEACTIVATED

+0

Я использовал этот 'a.t-некст-pd.continue-к-query.button-Text' на активированной кнопке. Это CSS-селектор, и он отлично работает в моем случае. –

ответ

0

После заполнения в деталях ждать в течение секунды. PhantomJS немедленно ищет активированную кнопку продолжения. Скорее всего, это вопрос времени. Кнопка продолжения может занять от 500 мс до 1 секунды, чтобы стать активной.

Поэтому, когда PhantomJS начинает поиск активированной кнопки, она не может найти ее, потому что если в DOM еще нет.

Если вы используете Python, используйте time.sleep(2). Он останавливается на 2 секунды. Это дает DOM время для изменения инактивированного кода на активированный код.

Я использовал это a.t-next-pd.continue-to-query.button-text, чтобы найти активированную кнопку. Это CSS-селектор, и он отлично работал в моем тестовом примере :)

Преобразуйте это на язык, который вы используете. Я использую Python: -

# code 
# to 
# fill the form 
time.sleep(2) 
driver.find_element_by_css_selector('a.t-next-pd.continue-to-query.button-text') 
+0

Все еще не работает. язык: Java. Я уже использовал: - 1. driver.manage(). Timeouts(). ImplicitlyWait (30, TimeUnit.SECONDS); 2. TimeUnit.SECONDS.sleep (5); 3. Thread.sleep (1000); Все они не работают. –

+0

@SaurabhNagpal Можете ли вы поделиться другим кодом с веб-страницы и с кодом Java? Я пробовал все, что вы дали, и это работает на моей стороне. Это поможет людям найти проблему.Если проблема по-прежнему сохраняется после того, как вы поделились кодом, я сделаю чат-комнату, где мы сможем обсудить ее подробно :) –