【问题标题】:asp.net RadioButton is display false always for selenium对于 selenium,asp.net RadioButton 始终显示为 false
【发布时间】:2019-07-16 14:32:45
【问题描述】:

我有一个如下的用户界面,我正在尝试自动化它。

我的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();

但它说元素显示为假。 他这是什么原因,我该如何解决这个问题?

我已经尝试过使用 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
消息=元素不可见(会话信息:chrome=72.0.3626.109)
(驱动信息:chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),平台=Windows NT 10.0.10586 x86_64) 来源=WebDriver

StackTrace:在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应 错误响应)在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串 driverCommandToExecute,Dictionary2 parameters) at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary2 参数)在 OpenQA.Selenium.Remote.RemoteWebElement.Click() 在 SeleniumBL.SeleniumSetMethods.ClickElement(IWebElement element) in D:\SourceControl\Test\Test \SeleniumHR\SeleniumHR\SeleniumBL\SeleniumSetMethods.cs:line 53 在 SeleniumHR.Models.Assesment.BigFiftyAssesment.AssesmentPlay() 在 D:\SourceControl\Test\Test \SeleniumHR\SeleniumHR\SeleniumHR\Models\Assesment\BigFiftyAssesment.cs:line 47 在 SeleniumHR.Models.AssesmentBase.AssesmentStart() 中 D:\SourceControl\Test\Test \SeleniumHR\SeleniumHR\SeleniumHR\Models\Assesment\AssesmentBase.cs:line 216 在 SeleniumHR.Models.Assesment.BigFiftyAssesment.ExecuteAssesment() 在 D:\SourceControl\Test\Test \SeleniumHR\SeleniumHR\SeleniumHRM\Models\Assesment\BigFiftyAssesment.cs:line 24 在 SeleniumHR.Models.Assesment.AssesmentFactory.AssesmentPlay(字符串 D:\SourceControl\Test\Test 中的 AssesmentType) \SeleniumHRM\SeleniumHR\SeleniumHR\Models\Assesment\AssesmentFactory.cs:line 48 在 SeleniumHRM.Program.Main(String[] args) 中 D:\SourceControl\Test\Test \SeleniumHR\SeleniumHR\SeleniumHR\Program.cs:49 行

我使用过的 Nuget 如下:

【问题讨论】:

  • 抱歉无法重现您的问题。它在这里工作。
  • 你能发布你的错误跟踪吗?
  • 你可以做什么等待元素或检查它是否在任何frame中?
  • @KajalKundu 我已经放了 thread.wait 但仍然是同样的问题
  • 只检查它是否在任何 iframe 内?

标签: c# asp.net selenium selenium-webdriver


【解决方案1】:
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 驱动程序才能兼容。我相信这会解决您的问题。

请看下面link

【讨论】:

  • 它不能解决我的问题。仍然给我同样的错误。对于我已安装的软件包,请检查问题
  • 你在使用 selenium RemoteWebDriver 吗?
【解决方案2】:

你可以尝试使用 visibilityOfElementLocated 这个来等待元素点击之前

WebDriverWait wait = new WebDriverWait(driver, 10);
var clickableElement = wait.Until(ExpectedConditions.visibilityOfElementLocated(By.XPath("//*[@id='ContentPlaceHolder1_QuetionListPlaceHolder_BigFiftyPersonalityQuestion1_BigFiftyPersonalityQuestionItem1221754_rdbListAnswers_0']")));

【讨论】:

    【解决方案3】:

    我能够找出我的问题。根据样式类单选按钮被禁用。因此它总是显示为假。我可以通过单击相关标签文本来单击单选按钮。我是这样做的

     // 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-15
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多