HTML-строка не подтверждается - PullRequest
0 голосов
/ 21 декабря 2010

Эти пробелы не добавлены мной на HTML SIDE, и я не могу редактировать HTML. Я хочу знать, что должно быть в моей строке сравнения?

Я использую watin для автоматизации процесса тестирования веб-сайтов, ноМне не удается встретить только одну кнопку. Все остальные работают

watin выполняет поиск контента по имени / значению / идентификатору и многим другим и работает нормально, но когда я вижу значение кнопки отправки, мне нужно нажать на нееесть некоторые перерывы и nsbp, поэтому я думаю, что они играют какую-то роль

Вот HTML:

<span class='button'><input type="submit" value="&nbsp;&nbsp;&nbsp;Login&nbsp;&nbsp;&nbsp;" /></span>&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class='button'><input type="button" value="&nbsp;&nbsp;&nbsp;Back&nbsp;&nbsp;&nbsp;" onclick="history.back(-1)" /></span> 

, а вот код для поиска

  browser.Button(WatiN.Core.Find.ByValue("&nbsp;&nbsp;&nbsp;Login&nbsp;&nbsp;&nbsp;")).Click();   

что можетбыть сделано ??

Ответы [ 4 ]

3 голосов
/ 21 декабря 2010

- Предложение - (то есть слишком большое для комментария)

Не следует использовать &nbsp;, чтобы добавить пробелы для кнопки отправки.Скорее, вы должны использовать CSS для стилизации кнопки по своему вкусу.Таким образом, у вас будет что-то вроде:

input[type=button] {
    padding:10px;
    min-width: 150px;
}

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

Редактировать: Вы пытались искать по идентификатору, а не по значению?Предполагается, что идентификаторы на странице должны быть уникальными, поэтому, если они не обнаруживаются таким образом, это одна из проблем, которая может быть исключена.Это также может быть тот факт, что вы ищете кнопку.A <button> - это не то же самое, что <input type="button">.

Редактировать 2: Несмотря на то, что проблема была из-за нарушения кодировки, я все же рекомендую сбросить эту кнопку, чтобы сбросить текст (удаляя все неразрывные пробелы) и прикрепить идентификатор / имяк этому.Причина в интернационализации - и если по какой-то причине вы измените размер кнопки в конструкторе или i18n в приложении и текст будет другим, ваш тест будет прерван.

2 голосов
/ 22 декабря 2010

Вы не должны использовать сущности с WatiN.

Этот код будет работать, , но вы должны использовать настоящий символ неразрывного пробела :

browser.Button(
    WatiN.Core.Find.ByValue(
        "   Login   ")).Click();

Это, вероятно, неудобно, но вы можете использовать (после добавления ссылки на System.Web) HttpUtility class:

browser.Button(
    WatiN.Core.Find.ByValue(
        System.Web.HttpUtility.HtmlDecode(
            "&nbsp;&nbsp;&nbsp;Login&nbsp;&nbsp;&nbsp;"))).Click();

Но на вашем месте я бы просто пошел с Regex:

browser.Button(
    WatiN.Core.Find.ByValue(
        new Regex(@"^\s*Login\s*$"))).Click();

или даже new Regex("Login").

Интересная вещь: если вам когда-нибудь понадобится Find.ByText, вам не нужно так сильно беспокоиться, и вы можете использовать обычный пробел (т.е. не совсем неразрывный пробел). Это потому, что нативный IE IHTMLElement::getAttribute (http://msdn.microsoft.com/en-us/library/aa752280(VS.85).aspx) преобразует &nbsp; из атрибута innertext в обычные пробелы, но из value, id и т. Д. Он не (&nbsp; преобразуется в настоящий неразрывный пробелы - 0xA0)

0 голосов
/ 21 декабря 2010

Я думаю, это потому, что &nbsp; в исходном коде HTML на самом деле является экранированной версией специального символа, который представляет неразрывный пробел. Так что в исходном коде на C # вам, вероятно, понадобится этот символ вместо HTML-кода объекта. Я думаю, что вы можете найти код этого символа с помощью этой кнопки, чтобы отправить форму GET. В URL появится код экранированного символа.

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

0 голосов
/ 21 декабря 2010

Ух ты, ты действительно любишь пространства! Я хотел бы удалить их и использовать отступы / поля, как HTML был разработан для использования. Тогда вам не понадобятся все эти пробелы, и вы можете назначить правильное значение для вашей кнопки, которое watiN будет распознавать.

...