繁体   English   中英

从下拉C#Webdriver中选择隐藏值

[英]To select hidden values from dropdown C# webdriver

我在选择C#webdriver中的下拉值时遇到问题。 我收到一条错误消息,说它是一个不可见的元素。我研究了在Web驱动程序C#中访问隐藏元素的方法,但是找不到可行的解决方案。 到目前为止,我已经尝试了Actions方法和Java脚本Executor,但是不确定我在做什么错。 我对自动化和使用C#语言很陌生。

这是我下面的代码使用Actions方法

IWebElement actionsMenu = driver.FindElement(By.Id("InitiatorID"));
Actions action = new Actions (driver);
action.MoveToElement(actionsMenu).Build().Perform();      
driver.FindElement(By.CssSelector("[index ='2']")).Click();**/

使用Java脚本执行器的脚本

((IJavaScriptExecutor)wd).ExecuteScript("arguments[0].Click()");
wd.FindElement(By.XPath("//input[@value = Bridget]"));
String("arguments[0].trigger('click')");
wd.FindElement(By.XPath("//input[@value = Bridget]"));

我也是Java脚本的新手,我不确定语法是否不正确。 这是HTML

<div class="question">
   <label for="InitiatorID">Initiator:</label>
   <div id="InitiatorID_chzn" class="chzn-container chzn-container-single" style="width: 270px;">
      <a href="javascript:void(0)" class="chzn-single" tabindex="-1">
         <span>Not Assigned</span>
      </a>
      <div class="chzn-drop" style="left: -9000px; width: 268px; top: 24px;">
         <div class="chzn-search">
            <input type="text" autocomplete="off" style="width: 233px;" tabindex="-1">
         </div>
         <ul class="chzn-results">
            <li id="InitiatorID_chzn_o_0" class="active-result result-selected" style="">Not Assigned</li>
      </div>

有人可以帮助解决这个问题。 谢谢你的帮助。

我不确定是否有帮助,但还是让我尝试一下:

首先,Selenium Webdriver基本上是用于自动化您可以手动执行的操作。 手动不能单击隐藏元素,因此使用硒也不能。 也许,如果您可以手动选择该值,则可以执行一些步骤,例如单击以打开下拉菜单,或者如Parker Beck建议将鼠标悬停在某个元素上以打开下拉菜单。 然后,当该元素可见并处于活动状态时,您可以单击它。 使用硒,您必须自动化所有相同的步骤。

也许答案是简单一些的:可能是在移至元素action.MoveToElement(actionsMenu).Build().Perform(); 您必须稍等一下再单击,否则Webdriver会变得太快了! 有很多等待的方式,只需稍作搜索,您就会发现很多主题!

阅读以下评论后进行编辑:action.MoveToElement(actionsMenu).Build()。Perform(); ==>仅移动鼠标指针。 它不会单击它,因此下一个元素将不可见。 如果您需要手动单击两次,则您的硒代码也应单击两次。 根据我到目前为止的了解,您可能会错过第一次点击。

我认为您使事情变得太复杂了。 不需要使用动作手动移动元素。 您可以尝试以下吗?

//Find the dropdown container and click it
IWebElement actionMenu = driver.FindElement(By.Id("InitiatorID"));
actionMenu.Click(); //Feel free to condense this to just driver.FindElement().Click();

//Find the now visible option and click it
driver.FindElement(By.XPath("//input[@value = Bridget]")).Click();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM