2015-02-14 6 views
1

Привет Я новичок в Selenium 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

Добро пожаловать в мир 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. Селектор очень важен для нахождения элемента однозначно. Я стараюсь избегать LinkText столько, сколько смогу. id должен быть вашим первым выбором всегда. Попробуйте использовать name, clasName, cssSelector, xpath если можно. В этом случае className работал не очень хорошо. Протестировано с cssSelector и сделал то, что он должен был делать. См. this для получения дополнительной информации.
+0

Большое вам спасибо, это сработало. я просто должен был изменить время ожидания до 30 секунд. –

+0

Я бы очень хотел знать, почему я получаю downvote для этого ответа. Пожалуйста, оставьте комментарий и дайте мне шанс на улучшение. – Saifur

Смежные вопросы