Selenium Webdriver 元素识别
Selenium Webdriver element identification
嗨,我是 Selenium Webdriver
的新手。
我已经接受了这个website,我正在尝试点击注册Link。我写了下面的代码。
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
,但是 link 不在 iframes
.
中
欢迎来到 Selenium
的世界。这通常是您面临的元素 wait/find 问题。我添加了 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。
嗨,我是 Selenium Webdriver
的新手。
我已经接受了这个website,我正在尝试点击注册Link。我写了下面的代码。
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
,但是 link 不在 iframes
.
欢迎来到 Selenium
的世界。这通常是您面临的元素 wait/find 问题。我添加了 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。