Skip to main content
 首页 » 编程设计

c#之尝试通过 xpath 查找元素时出错之System.InvalidOperationException : String cannot be cast to WebElement

2024年05月06日37bjzhanghao

我在 select2 元素上遇到错误“System.InvalidOperationException: java.lang.String cannot be cast to org.openqa.selenium.WebElement "当尝试从中选择值时。奇怪的是,有时测试会通过,而我在使用相同代码的其他 select2 元素上没有问题。这里可能是什么问题?

    Driver.FindElement(By.XPath("//*[@id='s2id_State']/a/span[2]/b")).Click(); 
    Driver.FindElement(By.CssSelector("#select2-drop input.select2-input")).SendKeys("1000"); 
    wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.XPath("//table/tbody/tr/td[1]/div[text()='1000']"), "1000")); //Error line 
    Driver.FindElement(By.XPath("//table/tbody/tr/td[1]/div[text()='1000']")).Click(); 
 
Result StackTrace:   
 
 
  at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value) 
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath) 
   at OpenQA.Selenium.By.<>c__DisplayClasse.<XPath>b__c(ISearchContext context) 
   at OpenQA.Selenium.By.FindElement(ISearchContext context) 
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by) 
   at OpenQA.Selenium.Support.UI.ExpectedConditions.<>c__DisplayClass26.<TextToBePresentInElementLocated>b__25(IWebDriver driver) 
   at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition) 
   at Automated.Test.Select2Test() in C:\....:line 86 

远程网络驱动程序:

     case "remote": 
         var huburl = new Uri(ConfigurationManager.AppSettings["SeleniumHubAddress"]); 
         DesiredCapabilities capabilities; 
         switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower()) 
                        { 
                            case "firefox": 
                                capabilities = DesiredCapabilities.Firefox(); 
                                break; 
                            case "ie": 
                                capabilities = DesiredCapabilities.InternetExplorer(); 
                                break; 
                            case "chrome": 
                                capabilities = DesiredCapabilities.Chrome(); 
                                break; 
                            default: 
                                throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower())); 
                        } 
 
         capabilities.IsJavaScriptEnabled = true; 
         driver = new AdvancedRemoteWebDriver(huburl, capabilities); 
         break; 
     default: 
         throw new NotImplementedException(); 

请您参考如下方法:

如果您正在使用如下 xpath 的文本用户:

//table/tbody/tr/td[1]/div[text()='1000']"