Selenium Webdriver元素识别

时间:2015-02-14 00:20:23

标签: java selenium selenium-webdriver webdriver

您好我是Selenium Webdriver的新手。

我已经使用了这个website,我试图点击注册链接。我写了以下代码。

driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.stepintohealth.qa");
driver.findElement(By.linkText("Register")).click();

执行代码时,它会抛出未找到元素的异常。我在seleniunm IDE尝试了同样的工作,没有任何问题。我已经验证了iframes,但注册链接不在iframes

1 个答案:

答案 0 :(得分:0)

欢迎来到Selenium的世界。它通常是您面临的元素等待/查找问题。我添加explicit等待确保元素在那里,然后再执行单击。

driver = new FirefoxDriver();
driver.get("http://www.stepintohealth.qa");

By byCss = By.cssSelector(".right1.navmenu a.register");
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(byCss ));
myDynamicElement.click();

要记住几件事:

  1. 您不希望将隐式和显式等待混合在一起,因为这可能是性能问题。不推荐。
  2. 选择器对于唯一地查找元素非常重要。我倾向于尽可能地避免LinkTextid应始终是您的首选。如果可以,请尝试使用nameclasNamecssSelectorxpath。在这种情况下,className不能很好地工作。经过cssSelector测试并完成了它应该做的事情。有关详细信息,请参阅this