2014-12-18 1 views
0

У меня возникла проблема с нажатием кнопки на тесте, которое я разработал, ошибка не возникает, но предупреждение происходит из-за умной идентификации, находящейся в webButton. Я хочу а не мой сценарий.Выполнение «Click» на WebButton типа submit

Это довольно простая линия:

Browser("ControlPoint").Page("Categories").WebButton("CategoryPublish").Click 

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

Однако это существует в репозитории объектов, если я отлаживаю и использую «Выделение в приложении», он мгновенно выделяет правильную кнопку.

Единственные вещи, которые торчат мне об этом, это то, что это webButton типа submit, я вполне уверен, что это используется где-то в других тестах, но я сейчас не смотрю, где он был использован. Во-вторых, ПОСЛЕ того, как кнопка была успешно нажата, над областью отображается ползунок с кнопкой ввода и новыми кнопками. Однако действие щелчка на этой новой кнопке работает без проблем.

Любые предложения? Есть ли способ предоставить другие свойства, а не имя или дополнительные свойства?

РЕДАКТИРОВАТЬ Я снова добавил кнопку в хранилище объекта, который наматывается с другим типом, на этот раз кнопки. Я отключил интеллектуальный идентификатор, и он работал в репозитории объектов, однако при запуске теста снова возникла одна и та же проблема.

Я также пытался использовать дополнительное описание без успеха, это то, что я использовал это не улучшило вещи:

Browser("ControlPoint").Page("Categories").WebButton("name:=CategoryPublish","type:=submit"). 

Вот свойства объекта для кнопки в соответствии с просьбой, в своем первоначальном виде:

properties

+1

Можете ли вы предоставить моментальный снимок свойств идентификации WebButton («CategoryPublish»)? – vins

+0

Вы можете добавить свойства к свойствам идентификации, используя кнопку плюс в редакторе OR. – TheBlastOne

+0

Привет @VinothS Я добавил свойства сейчас – shicky

ответ

0

Как уже упоминалось в других ответах, это было главным образом проблемой идентификации. Я не могу объяснить, почему все происходило так, как они это делали, но мои подозрения в отношении типа WebButton были «Submit» имели некоторые основания.

По существу я использовал объект шпион снова, чтобы выбрать кнопки в вопросе и на этот раз они были «кнопка»

Они изначально были добавлены с помощью объекта шпиона, так что я понятия не имею, как они оказались типа имея другой тип, но вот он! Чтобы убедиться, что вы правильно добавили свои объекты, всегда устанавливайте Smart Identification в false при отладке, я знаю, что это функция, которую я буду использовать в будущем более интенсивно!

EDIT

Комментарий ниже относится к попытке исправить эту же проблему в другом месте, и он не работает. В этом случае мне удалось разобраться в сути проблемы, казалось, кто-то вручную изменил имя свойства описания, чтобы оно соответствовало имени, используемому в репозитории объектов. Это означало, что это все еще невозможно найти после изменения типа кнопки в этом случае.

+0

Я ранее удалил это, потому что он работал, а затем он не ... теперь он снова работает! Думаю, время скажет об этом, но я определенно хотел бы увидеть альтернативные решения – shicky

1

Эта проблема скорее не о функции, которая нажимает объект, а находит или идентифицирует объект. не

Там может быть несколько проблем с этой кнопкой:
1. Проверьте в диспетчере хранилища, что у вас есть уникальные описания свойств и порядковый идентификатор набора правильно: как правило, должны быть установлены в «Type, Value: Нет», или ' Индекс: 0'
2. Попытка прочитать объект динамически, по Description.Create и в режиме отладки проверить, сколько childObjects (objDescription) объектов возвращается на .Count(). Затем вы можете использовать obj (i) .highlight в консоли или оценить параметры и проверить, что не так.

НО!Если он будет выделить динамически собранный объект, и нажмите кнопку еще не будет работать, а затем использовать fireEvent на этом объекте, или перетащить/капли, или изменить тип воспроизведения перед нажатием кнопки:

Setting.WebPackage("ReplayType") = 2 
Setting.WebPackage("ReplayType") = 1 

Или, если вы можете нажать введите вместо этого вы можете сделать простой способ:

Set objShell = CreateObject("Wscript.shell") 
objShell.SendKeys "{ENTER}" 
+0

Привет, Артур, как я могу обеспечить уникальность? Я имею в виду, что у меня есть это в репозитории объектов, и это подчеркивает, когда он не работает в тесте, так что, конечно, это покрывается? Если нет, как я могу предоставить дополнительные аргументы функции щелчка, чтобы я получил правильную кнопку? Например: Browser («ControlPoint»). Страница («Категории»). WebButton («CategoryPublish»).Тип («Отправить»). Нажмите Я бы очень хотел избежать sendKeys, так как это явно работает, есть только странная проблема с идентификацией, как вы уже упоминали – shicky

+0

Короче говоря, у меня есть webButton, я знаю, что его тип submit, есть ли способ использовать это с помощью функции Click, чтобы убедиться, что в этом случае она попадает в нужную кнопку? – shicky

+0

Отключить интеллектуальную идентификацию по всему миру или только для этого тестового объекта. Вы увидите, что функция подсветки также не сможет найти кнопку. В настоящее время он работает там, потому что он использует интеллектуальную идентификацию, но без задержки, потому что он пробует интеллектуальную идентификацию сразу после неудачи «стандартного распознавания». Вы должны сделать стандартные свойства распознавания уникальными. Смарт-идентификатор должен использоваться и настраиваться только после этого. Это просто дополнительная (и дополнительная) защитная сетка. – TheBlastOne

-2

У меня была эта проблема раньше и случается очень много. Как указывал Артур выше, он находит объект. Попробуйте

Если браузер ("ControlPoint"). Страница ("Категории"). WebButton ("CategoryPublish"). Exist (1) Тогда
Browser ("ControlPoint"). Страница ("Категории"). WebButton ("CategoryPublish"). Нажмите
End If

Или вы могли бы объединить технику Артур с ...

Set objShell = CreateObject ("Wscript.shell")
Если B rowser ("ControlPoint"). Page ("Категории"). WebButton ("CategoryPublish"). Exist (1) Тогда
objShell.SendKeys "{ENTER}"
End If

Таким образом, вы бы сохраните свою уникальность. Если у него все еще есть проблема с поиском. Проверьте свой консольный журнал, чтобы узнать, есть ли у него проблемы с поиском самого объекта и при необходимости отрегулируйте время. Или используйте цикл while, который имеет инкрементирующий int, чтобы остановить его на всякий случай.

+0

Я боюсь, что это не помогло бы, на самом деле это именно то, что он сейчас делает. Если он не может найти объект, зачем нужна инструкция if? Как сказал Артур, отправлять ключи - это вариант, но это тот, который я бы предпочел избежать. У меня есть идея, которая может работать, если это произойдет, я отправлю ее здесь в качестве ответа. Благодарим вас за то, что нашли время, чтобы предложить свой ответ. – shicky

+0

Используйте .Net Windows Form Spy и замените то, что вам нужно для имени объекта. –