【问题标题】:how can i locate a input element of radio and check it ?always "Unable to find element "如何找到收音机的输入元素并检查它?总是“无法找到元素”
【发布时间】:2016-09-02 07:51:18
【问题描述】:

我正在用 c# 学习 selenium,我正在尝试获取 radio 的输入元素,但总是“无法找到元素”

 <div>
<span id="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch" class="radioListOptions">
<input id="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_0" type="radio" checked="checked" value="My" name="ctl00$ContentPlaceHolder1$ucObservationSearch1$rblAdvancedSearch">
<label for="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_0">My</label>
<br>
<input id="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1" type="radio" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ucObservationSearch1$rblAdvancedSearch$1\',\'\')', 0)" value="Workgroup" name="ctl00$ContentPlaceHolder1$ucObservationSearch1$rblAdvancedSearch">
<label for="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1">Workgroup</label>
<br>
<input id="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_2" type="radio" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ucObservationSearch1$rblAdvancedSearch$2\',\'\')', 0)" value="Division" name="ctl00$ContentPlaceHolder1$ucObservationSearch1$rblAdvancedSearch">
<label for="ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_2">Division</label>
</span>
</div>

我试过了

 ReadOnlyCollection<IWebElement> links1 = driver.FindElements(By.XPath("//input[contains(text(),'Workgroup')]"));
 ReadOnlyCollection<IWebElement> links1 = driver.FindElements(By.XPath("//input[contains(@value,'Workgroup')]"));
 IWebElement check =    driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1"));

我也尝试在控制台中使用 javascript

document.getElementById("ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1").checked=true

return "TypeError: document.getElementById(...) is null" 我没有更多的解决方案,我需要一些帮助,谢谢

我发现这个html里面多了一个html,也许这就是为什么总是失败,有谁知道怎么处理?

【问题讨论】:

    标签: javascript c# html


    【解决方案1】:

    试试这个..

     document.addEventListener("DOMContentLoaded", function (event) {
              document.getElementById("ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1").checked = true;
    
          });
    

    【讨论】:

    • 谢谢,不工作 ,"document.getElementById("ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1").checked = true;"没有返回错误,似乎什么都不做
    • 我试过“System.Threading.Thread.Sleep(10000);”和“ js1.ExecuteScript("document.getElementById(\"ctl00_ContentPlaceHolder1_ucObservationSearch1_rblAdvancedSearch_1\").checked=\"true\"");"它返回错误。
    【解决方案2】:

    driver.SwitchTo().Frame("mainContent");

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 2022-07-05
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 2020-06-14
      相关资源
      最近更新 更多