gpt4 book ai didi

c# - OpenQA.Selenium.NoSuchElementException - C# Selenium

转载 作者:行者123 更新时间:2023-11-30 16:43:52 34 4
gpt4 key购买 nike

必须在文本框中输入文本,列表会自动扩展,我需要选择第一项。但由于异常而失败; OpenQA.Selenium.NoSuchElementException。我尝试使用 wait.Until(),但遇到了同样的错误。

Screenshot

try
{
IWebElement cityList = driver.FindElement(By.XPath("value"));
MouseClick(driver, cityList);
}
catch (OpenQA.Selenium.NoSuchElementException ex)
{
IWebElement cityList = driver.FindElement(By.XPath("value"));
MouseClick(driver, cityList);
}

编辑

HTML代码:

<input name="ctl00$cphmain$txtCity" type="text" maxlength="50" id="ctl00_cphmain_txtCity" class="mandsearchtxtbox" onkeypress="javascript:return ValidateInputAlphabeticValuesOnly(event);" onblur="javascript:return checkItemMsg(this)" style="width:180px;" autocomplete="off">
<div class="AutoExtenderHighlight">AMANDOLUWA</div>

用 wait.Until() 编写代码

WebDriverWait wait1 = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until<IWebElement>((d) =>
{
try
{
return d.FindElement(By.XPath("//*[@id='citydiv']/div"));
MouseClick(driver, driver.FindElement(By.XPath("//*[@id='citydiv']/div")));
}
catch (OpenQA.Selenium.NoSuchElementException ex)
{
return null;
MouseClick(driver, driver.FindElement(By.XPath("//*[@id='citydiv']/div")));
}
});

编辑2

WebDriverException(Button) 的 HTML 代码

HTML code

最佳答案

根据您发布的 html,id 是 ctl00_cphmain_txtCity,而不是 citydiv

您的wait.Until 实现将返回IWebElementnull,它永远不会到达MouseClick 方法.它还将检查元素是否存在,不可见。

您可以使用内置的 expected conditions

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='ctl00_cphmain_txtCity']/div")));
element.Click();

如果你想要自己的实现,你可以做类似的事情

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement option = wait.Until<IWebElement>((d) =>
{
try
{
IWebElement element = d.FindElement(By.XPath("//*[@id='ctl00_cphmain_txtCity']/div"));
if (element.Displayed)
{
return element;
}
}
catch (NoSuchElementException ) { }
catch (StaleElementReferenceException) { }

return null;
});

option.Click();

尽管我命令您使用内置功能。<​​/p>

关于c# - OpenQA.Selenium.NoSuchElementException - C# Selenium ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179554/

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