C# 如何在Selenium页面对象中初始化WebElements

C# 如何在Selenium页面对象中初始化WebElements,c#,selenium-webdriver,C#,Selenium Webdriver,我是Selenium新手,希望了解更多信息,我将Selenium WebDriver与C#一起使用 这就是我如何启动WebElement: CarouselSliderNextButton = DriverInitializer.driver .FindElement(By.XPath("//a[@class='buttons next']")); 但是如果元素由于某种原因不存在;例如隐藏,那么它就不起作用了。我知道我可以在开始之前检查元素是否存在,但如果我这样做是正确的,我很

我是Selenium新手,希望了解更多信息,我将Selenium WebDriver与C#一起使用

这就是我如何启动
WebElement

CarouselSliderNextButton = DriverInitializer.driver
        .FindElement(By.XPath("//a[@class='buttons next']"));

但是如果元素由于某种原因不存在;例如隐藏,那么它就不起作用了。我知道我可以在开始之前检查元素是否存在,但如果我这样做是正确的,我很想听听专家的意见。

我不是在声称自己是专家,但我认为:

  • 您不会“启动”web元素
  • 您可以找到一个web元素
  • 首先,您需要从html文件中找到要定位的元素。您可以在开发者模式下使用Google或Firefox来查找它。我建议您为Firefox安装“Firebug”,它非常有用
  • 有多种原因导致您可以从HTML文件中“看到”某个元素,但无法找到该元素:
  • 1:此元素位于iframe上,这种情况要求您先定位此iframe,然后再定位元素
  • 2:此元素尚不可见,例如,只有将鼠标悬停在某个区域上时,才会出现下拉箭头按钮

但是您正朝着正确的方向前进。

如果您正试图初始化WebElement,我将使用:

WebElement element = driver.findElement(By.tagName("div"));
因为大多数DOM都有div标记。 然后在尝试查找存在的元素(并且不是div标记)后,检查:


感谢Yu Zhang,我很感谢他的贡献,我更希望了解如何找到webelements并将它们声明为我的页面对象类的变量,比如现在,如果我只是这样做的话;CarouselSliderNextButton=DriverInitializer.driver.findelelement(By.XPath(“//a[@class='buttons next']”)-元素还没有出现在HTML页面中,然后我得到一个异常,所以我在一个方法中声明这个变量,以便能够处理这样的异常
if (element.getTagName().equals("div")){
    System.out.println("Element not found...");
}