您好,我是 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
中。
最佳答案
欢迎来到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();
需要记住的几件事:
- 您不想将隐式等待和显式等待混合在一起,因为这可能会导致性能问题。不建议这样做。
- 选择器对于唯一地查找元素非常重要。我倾向于尽可能避免
LinkText
。id
应该始终是您的首选。如果可以的话,尝试使用name
、clasName
、cssSelector
、xpath
。在这种情况下,className 的效果不太好。使用cssSelector
进行测试并完成了它应该做的事情。请参阅this了解更多信息。
关于java - Selenium Webdriver 元素识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510947/