gpt4 book ai didi

selenium - System.NotImplementedException : Element is no longer valid -Selenium Webdriver

转载 作者:行者123 更新时间:2023-12-04 18:12:01 25 4
gpt4 key购买 nike

这让我发疯,我尝试使用 By.Id or By.Xpath但没有一个有效,这是我的Select Method试图从下拉列表中选择文本

//测试代码

 SelectMyText(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_ddlCategory']"), "Employee");

//方法:
     public void SelectMyText(By locator, string valueToBeSelected)
{
var options = GetElementId(locator).FindElements(By.TagName("option"));
foreach (var option in options)
{
if (valueToBeSelected == option.Text)
{
option.Click();
return;
}
}
}

public IWebElement GetElementId(By locator)
{
return Driver.FindElement(locator);
}

这是得到的错误:
threw exception: 
System.NotImplementedException: Element is no longer valid
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.get_Text()

以下是此错误的屏幕截图:

enter image description here
enter image description here

最佳答案

好吧,您的问题来自问题类别,如何从下拉列表中选择一个选项。我通常使用两种方法:
方法 1 (使用操作生成器,高级用户操作 api):

WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.MoveToElement(mnEle).perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click()

;
您可以获得的一些附加信息 here

第二种方法(直接使用js):
String cssSelector =..blablabla...
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssSelector+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());

希望这对你有用)

关于selenium - System.NotImplementedException : Element is no longer valid -Selenium Webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12429100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com