asp.net RadioButton всегда показывает false для селена - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть следующий пользовательский интерфейс, и я пытаюсь автоматизировать это.

enter image description here

мой HTML-контент выглядит следующим образом:

<div class="medium-5 columns tableheading-td">
  <ul id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers" class="assessment-main-layout tabled-list" onchange="ChangeTextColorForSelectedRadio(this);">
    <li>
      <input id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0" type="radio" name="ctl00$ctl00$ContentPlaceHolder1$QuetionListPlaceHolder$BigFiftyPersonalityQuestion1$BigFiftyPersonalityQuestionItem1221754$rdbListAnswers"
        value="0">
      <label for="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0"> </label>
    </li>
    <li>
      <input id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_1" type="radio" name="ctl00$ctl00$ContentPlaceHolder1$QuetionListPlaceHolder$BigFiftyPersonalityQuestion1$BigFiftyPersonalityQuestionItem1221754$rdbListAnswers"
        value="1">
      <label for="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_1"> </label>
    </li>
    <li>
      <input id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_2" type="radio" name="ctl00$ctl00$ContentPlaceHolder1$QuetionListPlaceHolder$BigFiftyPersonalityQuestion1$BigFiftyPersonalityQuestionItem1221754$rdbListAnswers"
        value="2" style="">
      <label for="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_2"> </label>
    </li>
    <li>
      <input id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_3" type="radio" name="ctl00$ctl00$ContentPlaceHolder1$QuetionListPlaceHolder$BigFiftyPersonalityQuestion1$BigFiftyPersonalityQuestionItem1221754$rdbListAnswers"
        value="3">
      <label for="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_3"> </label>
    </li>
    <li>
      <input id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_4" type="radio" name="ctl00$ctl00$ContentPlaceHolder1$QuetionListPlaceHolder$BigFiftyPersonalityQuestion1$BigFiftyPersonalityQuestionItem1221754$rdbListAnswers"
        value="4">
      <label for="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_4"> </label>
    </li>
  </ul>
</div>

Я пытаюсь щелкнуть мои радиокнопки следующим образом:

IWebElement webElement= CommonProperties.driver.FindElement(By.Id("ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_2"));
webElement.ClickElement();

, но он говорит, что элемент отображает false.Какова причина этого и как я могу это исправить?enter image description here

я пробовал с xpath:

 IWebElement webElement= CommonProperties.driver.FindElement(By.XPath("//*[@id='ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0']"));

(имея два xpath для переключателя и метки. Даже при получении той же проблемы.

//*[@id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0"]

//*[@id="ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers"]/li[1]/label

OpenQA.Selenium.ElementNotVisibleException HResult = 0x80131500
Message = элемент не виден (информация Session: хром = 72.0.3626.109)
(Информация о Driver: chromedriver = 2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),платформа = Windows NT 10.0.10586 x86_64) Source = WebDriver

StackTrace: в OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError (Response errorResponse) в OpenQA.Selenium.Remote.RemoteExecuri (RemotionWeb)1034 * 2 параметра) в OpenQA.Selenium.Remote.RemoteWebElement.Click () в SeleniumBL.SeleniumSetMethods.ClickElement (элемент IWebElement) в D: \ SourceControl \ Test \ Test \ SeleniumHR \ SeleniumHR \ SeleniumSLSeleniumHR.Models.Assesment.BigFiftyAssesment.AssesmentPlay () в D: \ SourceControl \ Test \ Test \ SeleniumHR \ SeleniumHR \ SeleniumHR \ Models \ Assesment \ BigFiftyAssesment.cs: строка 47 в SeleniumHR.Models.AssesmentBase.AssesmentStart () в D: \ SourceControl \ Test \ Test \ SeleniumHR \ SeleniumHR \ SeleniumHR \ Models \ Assesment \ AssesB.в SeleniumHR.Models.Assesment.BigFiftyAssesment.ExecuteAssesment () в D: \ SourceControl \ Test \ Test \ SeleniumHR \ SeleniumHR \ SeleniumHRM \ Models \ Assesment \ BigFiftyAssesment.cs: строка 24 в SeleniumHR.ModelsAsactFasementSaSensementAssesingSenseSaSensementAssesingSenseSaSensementAssesingSenseSaSmentSense для Asses (AssetSensement Asses St.AssesmentType) в D: \ SourceControl \ Test \ Test \ SeleniumHRM \ SeleniumHR \ SeleniumHR \ Models \ Assesment \ AssesmentFactory.cs: строка 48 в SeleniumHRM.Program.Main (String [] args) в D: \ SourceControl \ Test \ Test \ TestSeleniumHR \ SeleniumHR \ SeleniumHR \ Program.cs: строка 49

Nuget я использовал следующим образом: enter image description here

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Можете ли вы попытаться использовать visibilityOfElementLocated для ожидания элемента перед нажатием

WebDriverWait wait = new WebDriverWait(driver, 10);
var clickableElement = wait.Until(ExpectedConditions.visibilityOfElementLocated(By.XPath("//*[@id='ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0']")));
0 голосов
/ 25 февраля 2019

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

 // get lable for selected radio button
IWebElement radioButtonSelectedLabel = CommonProperties.driver.FindElement(By.CssSelector("label[for='ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0']"));
// click on the label
radioButtonSelectedLabel.ClickElement();
0 голосов
/ 22 февраля 2019
exception details : element not visible (Session info: chrome=72.0.3626.109) (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.10586 x86_64)

Это показывает, что вы используете более старую версию chromedriver=2.37.544315, которая не совместима с chrome version 72.Вам необходимо обновить драйвер Chrome, чтобы он стал совместимым. Я считаю, что это решит вашу проблему.

Пожалуйста, см. Следующую ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...