Нажмите ссылку Селен веб-драйвер работает, т.е. не Firefox - PullRequest
6 голосов
/ 17 ноября 2011

Я не могу на всю жизнь понять, что происходит.код прост:

//WebDriver driver = new InternetExplorerDriver();  
//WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.com");
driver.findElement(By.xpath("//*[@id='pa-u_14782488-bd']/a/span[2]")).click();

Я использую либо ff, либо ie драйвер.но последние 2 строки кода одинаковы.работает то есть, но не фф.забавно то, что я получаю xpath от ff firebug, поэтому xpath подходит для ff.для версии 7.0.1.Это просто ссылка Почта в левой колонке сайта Yahoo.Почему это так сложно?

Ответы [ 3 ]

2 голосов
/ 29 октября 2013

Как упомянул Slanec , сайты такого типа используют динамические идентификаторы, поэтому лучшим вариантом в указанном выше случае будет использование атрибута title, который имеет меньшую вероятность изменения. если вы хотите использовать xpath, это сработает,

driver.findElement(By.xpath("//*[@title='Mail']")).click();

Еще лучшим вариантом будет использовать текст ссылки , поскольку он работает так же, как пользователь нажимает вручную ...

driver.findElement(By.linkText("MAIL")).click();
0 голосов
/ 18 ноября 2011

не используйте поиск xpath .. он очень нестабилен и не помогает вашему делу вообще.Кроме того, ваш код селена теперь тесно связан с разметкой, и любые изменения в разметке, такие как введение контейнера (то есть, div), не пройдут тест.

Вы можете использовать область видимости для достижения чего-то подобного.пример:

var container=driver.findElement(By.xpath("//*[@id='pa-u_14782488-bd']"));

var spans=container.findElements(By.tagName("span"));

spans[1].Click();

Также я не понимаю, как это работает, потому что у вас есть ссылка, и я предполагаю, что для стилизации у вас есть два пролета внутри, но нажатие на любой из них должно по-прежнему вызывать то же самоедействие, как нажатие на кнопку коррекции клика? или я что-то упустил?

Возможно, Firefox неправильно обрабатывает ваши события.

0 голосов
/ 17 ноября 2011

Селену иногда трудно с элементами, встроенными в элементы ссылки (<a>). Попробуйте свой код без последней части XPath. Итак:

//*[@id='pa-u_14782488-bd']/a

Убедитесь, что вы также опубликуете, какую версию Selenium вы используете, чтобы другие могли оказать вам более подробную помощь.

...