2017-06-22 140 views
-1

我将尽我所能解释这一点。Selenium c#Google Chrome下拉菜单

我使用3种主流浏览器,firefox,chrome和IE运行测试。

我有我从下拉菜单中选择数据的行。这是我使用的一个例子。 new SelectElement(CPC_Main.driver.FindElement(By.XPath("//select[@id='orgVdc']"))).SelectByText("Selenium_vDC");

这将选择我的元素orgVdc并通过Selenium_vDC选择文本值。这对于Firefox来说是完美的工作,但是Chrome会挂起并超时。

从我可以告诉问题是关于该元素的默认值。

例如,如果元素的默认值是“Test_vDC”,硒将成功更改所有浏览器的“Selenum_vDC”。

但是,如果默认值是“Selenium_vDC”,那么Chrome会在试图选择相同的值时挂起。

我希望对此有足够的解释,在坚果壳中,Chrome不喜欢匹配默认值。

回答

0

我以前遇到过这样的问题。我曾经得到像“元素不再附加到DOM”的异常。像这些问题(陈旧的引用异常)需要一个可靠的异常处理来确保自动化执行不受影响。

您可以尝试下面的代码。您可以根据您的代码设置修改以下代码。

public void SetDropDownValue(string Xpath, string value) 
    { 
     var element = FindElement(By.Xpath("Xpath")); 

     var selectElement = new SelectElement(element); 
     //check whether the option is selectable or not 
     var wait = new WebDriverWait(this.driver, this.testCaseConfiguration.WaitTime); 
     wait.Until(ExpectedConditions.TextToBePresentInElement(selectElement , option)); 
     try 
     { 
      selectElement.SelectByText(value); 
     } 
     catch (StaleElementReferenceException) 
     { 
      element = FindElement(By.Xpath("Xpath")); 
      selectElement = new SelectElement(element); 
      selectElement.SelectByText(value); 
     } 

    } 
+0

感谢您的评论。我正在将上述内容注入到课程中,出于某种原因,我的第二个屏幕上的测试开始工作。现在我认为Chrome仅仅是一个糟糕的一天 –