2016-09-06 3 views
0

Я использую Selenium WebDriver для Visual Studio 2015. У меня была постоянная проблема с переключателем, который изначально работал, а затем перестает работать, а затем возобновляет работу снова. Я попытался сузить любую причину причины, но я не могу изолировать проблему.Веб-элемент Случайно перестает работать

  1. Я попробовал это на обоих IE 10/11 и Chrome и не видят в WebElement больше.

  2. Я добавил Wait функцию, чтобы попытаться увидеть, если элемент виден (даже попробовал поспать на всякий случай)

  3. Поскольку это Click() метод я старался как щелчок и SendKeys. введите

  4. Несколько путей, по имени, CSS ID, XPath, но webelement не изменилась на всех

Пожалуйста, смотрите мой код ниже: -

test.Log(LogStatus.Info, "Blah", "Before"); 
try 
{ 
    radBtnCID=wait.Until(ExpectedConditions.ElementIsVisible(By.Id("someID"))); 
    if (radBtnCID == null) 
    { 
     test.Log(LogStatus.Error, method, "Web Element Returned Null: radBtnCID"); 
    } 
    else 
    { 
     radBtnCID.SendKeys(Keys.Enter); 
     test.Log(LogStatus.Info, radBtnCID.Text, radBtnCID.Text); 
    } 
} 
catch (Exception ex) 
{ 
    test.Log(LogStatus.Error, method, ex.Message); 
} 
test.Log(LogStatus.Info, "Blah", "After"); 

Когда я отладка коды после функции ожидания он двигается к заявлению еще поэтому его не видя WebElement, как null, я буквально смотрел, как выполнить строку коды, но он никогда не делает выбор нужной кнопки радио .It исключает исключение, и я успешно вижу мои сообщения до и после. Пожалуйста, помогите, так как это происходит, и у меня заканчиваются идеи.

+0

и что проблема с этим 'radBtnCID .Нажмите() '?? –

+0

То же, что и с radBtnCID.SendKeys (Keys.Enter), он смотрит прямо на код и никогда не выбирает нужный переключатель. –

+0

Попробуйте один раз использовать 'IJavascriptExecutor' как ==>' IJavascriptExecutor js = driver как IJavascriptExecutor; js.ExecuteScript ("arguments [0] .click()", radBtnCID); 'и дайте мне знать .. :) –

ответ

1

Кажется разработке проблемы на вашей странице, поэтому вы не можете выполнить IWebElement.Click() здесь, Вы также можете попробовать в качестве альтернативного решения, используя IJavaScriptExecutor, как показано ниже: -

IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
js.ExecuteScript("arguments[0].click()",radBtnCID); 
+1

JavaScript-инъекция 'HTMLElement.click()' не должна использоваться в контексте тестирования. Это поражает цель теста. Во-первых, поскольку он не генерирует все события, такие как реальный клик (фокус, размытие, mousedown, mouseup ...) и второй, потому что он не гарантирует, что реальный пользователь может взаимодействовать с элементом. –

+0

@FlorentB. да, вы абсолютно правы, поэтому я упомянул, что можно использовать в качестве альтернативного решения. Спасибо, чтобы указать это .. :) –

+0

@FlorentB. Хорошая точка зрения. Однако есть ли у вас какие-либо решения? – Thibstars

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