我对Selenium和C#相当新,需要一些帮助。我一直在关注一些在线教程,以创建一些基于硒的测试,但现在我尝试将它们应用到不同的网站。
我遇到的问题是有一个我无法选择的单选按钮。
错误: OpenQA.Selenium.ElementNotVisibleException
我看过很多帖子并尝试了几件事,但我无法让它发挥作用。我不确定这是因为我的代码无效还是我需要尝试别的东西。
我使用的网站是:url
输入邮政编码,电子邮件地址并点击下一步后,您需要选择燃料类型,但我找不到任何要选择的元素。
我尝试使用IJavaScriptExecutor
,添加等待并尝试通过Id和xpath查找但似乎没有任何效果。我也试过最大化浏览器
这是我的代码:
namespace TestAutomation
{
class SelectFuelObject
{
public SelectFuelObject()
{
PageFactory.InitElements(PropertiesCollection.driver, this);
}
[FindsBy(How = How.Id, Using = "dualFuel")]
public IWebElement btnFuelType { get; set; }
public void FuelType()
{
btnFuelType.ClickOnInvisibleElement();
}
}
}
Javascript类
namespace TestAutomation
{
public static class HiddenElements
{
public static void ClickOnInvisibleElement(this IWebElement element)
{
((IJavaScriptExecutor)PropertiesCollection.driver).ExecuteScript("arguments[0].hidden = false;", element);
element.Click();
}
}
}
PropertiesCollection类
class PropertiesCollection
{
//Auto-Implement Property
public static IWebDriver driver { get; set; }
}
}
这是我尝试的等待,只是在规定的时间之后导致超时
WebDriverWait wait = new WebDriverWait(PropertiesCollection.driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("DualFuel")));
请有人帮助我吗?
答案 0 :(得分:0)
带有input
“DualFuel”的id
不是可见输入,但它包含在我认为您要点击的内容中。
请改为尝试:
[FindsBy(How = How.CssSelector, Using = ".opt.dual")]
public IWebElement btnFuelType { get; set; }
这将获得包含您输入的div
。您也可以尝试使用label
属性“dualFuel”
for
然后,您只需点击btnFuelType.click()
的元素即可。如果您因无法点击或出现而遇到错误,请在评论中告诉我。在这个或大多数情况下,我们没有任何理由使用IJavaScriptExecutor
。