我对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")));
请任何人可以帮我吗?
带有id
" DualFuel"的input
不是可见的输入,但它包含在我认为您要单击的内容中。
而是尝试一下:
[FindsBy(How = How.CssSelector, Using = ".opt.dual")]
public IWebElement btnFuelType { get; set; }
这将获得包含您输入的div
。您也可以尝试使用for
属性" DualFuel"单击label
然后,您可以使用btnFuelType.click()
单击该元素。如果您遇到错误或不存在的错误,请在评论中告诉我。在此或大多数情况下,应该没有任何理由使用IJavaScriptExecutor
。