"Почему FirefoxDriver кликает не туда?"

"Почему FirefoxDriver кликает не туда?"

Примечание: описанное ниже поведение было улучшено в версии 2.52, почитать об этом можно здесь.

Я предвижу, что этот вопрос может возникнуть у некоторых пользователей после выхода версии Selenium 2.48.

Потому что операция click с использованием синтезированных событий будет работать не так, как раньше. Лучше, естественно :) Но – не так, как раньше. Она будет кликать по самому верхнему элементу.

Говоря технически более точно, когда у какого-то элемента вызывается метод click, драйвер сначала пытается проскроллировать страницу так, чтобы элемент оказался в области видимости, после этого он определяет положение и размер элемента, затем вычисляет координаты центра и кликает в эту точку. Но в браузере элементы располагаются “в несколько слоёв”, это можно наглядно увидеть в браузере Firefox, используя режим 3D View. Поэтому в точке, куда выполняется click, вполне может находиться какой-то другой элемент. И тогда драйвер кликнет по этому вышележащему элементу, а не по тому, в котором вызывался метод click.

Раньше такого эффекта можно было добиться только с использованием нативных событий. Их больше нет. Но зато синтезированные становятся “более нативными”.