2016-07-27 84 views
0

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

这是使用操作方法,我下面的代码

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> 

有人可以请解决此问题的帮助。谢谢你的帮助。

+0

这是一个无序列表类别下拉列表,只有在点击它后才能看到这些值。我建议的解决方案是首先找到你需要点击的元素。并使用element.click。 Manuall在单击元素时会看到UL和LI标签的html代码。您可以看到html代码来识别UL和LI.捕获所有LI标签,并遍历每个值并执行点击操作。有很多线程运行在同一个问题上。请谷歌。 – Siva

回答

0

我觉得你让事情太复杂了。不应该需要使用操作手动移动元素。你可以尝试以下吗?

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

如果它是一个扩展悬停的菜单,那就不同了,我可能会误解这个问题。只要让我知道,我会尝试改变它。 –

+0

Hello Chai/Parker,涉及的手动操作是,单击一个下拉列表,然后从下拉列表中单击一个值。所以我的代码甚至没有点击下拉菜单,因为显示没有。 – Kalaivani

+0

'SelectElement'只适用于SELECT标签。这是其中下拉实际上不是“SELECT”标签的情况之一,因此此代码不起作用。 – JeffC

1

我不知道是否有帮助,但让我想试试:

首先,硒的webdriver基本上是自动化的东西,你可以做手工。手动你不能点击一个隐藏的元素,所以用硒你也不能。如果手动选择该值,可能需要点击以打开下拉菜单,或者Parker Beck建议将鼠标悬停在某个元素上以打开下拉菜单。然后,一旦该元素可见并且处于活动状态,您可以点击它。 有了硒,你必须自动化所有相同的步骤。

也许答案更简单一点:可能是在移动到元素action.MoveToElement(actionsMenu).Build().Perform();之后,您必须稍等一下才能点击或者webdriver速度太快! 有很多方法可以等待,只需要搜索一下,你会发现一堆话题!

在阅读以下注释之后进行编辑: action.MoveToElement(actionsMenu).Build()。Perform(); ==>仅移动鼠标指针。它不会点击它,所以你的下一个元素将不可见。如果您需要手动点击2次,您的硒代码也应该点击两次。从我目前了解的情况来看,您可能会错过第一次点击。

+0

我不同意“这不能解决问题的答案” - 它的确如此。 –

相关问题