t.me/atinfo_chat Telegram группа по автоматизации тестирования

Клик по ссылке или по вложенному в нее элементу?

Теги: #<Tag:0x00007f7493e31688>

Подскажите как правильно?
есть ссылка с вложенным тегом img, чтобы перейти по ссылке мне нужно передать локатор ссылки или img?
Пример:
<a id='cl' href='http://www.example.com'><img id='im' src='img.jpg'></a>
Правильно так:
driver.find_element_by_css_selector("#cl").click()
или так:
driver.find_element_by_css_selector("#im").click()
и если у нас вместо img будет h1 и т.д.?

Если id - уникален.
driver.find_element(By.ID, “cl”).click()
driver.find_element_by_id(“cl”).click()

Если неважен факт кликанья:
driver.get(“http://www.example.com”) # нам необязательно кликать, если цель - просто перейти по ссылке )))

Если id может повториться у других элементов:
driver.find_element(By.XPATH, “//*a[@id=‘cl’]”).click()
driver.find_element_by_xpath("//*a[@id=‘cl’]").click()

Нет, вопрос был не в этом.
Меня интересует на какой элемент кликать, что бы это было правильно с точки зрения “максимально приблизить тест к реальному поведению пользователя”.
Раньше я не задумываясь кликал по самой ссылке, не обращая внимания на вложенные в нее элементы.
Заметил случаи когда при клике по ссылке ничего не происходило, тогда я начал копать и заметил, что ссылки, в которых есть вложенные элементы (например картинки) не всегда реагируют на клик, но если кликнуть по вложенному элементу то все норм.

Ааа, в данном случае я бы кликнул на img.
Проверяю легко - в FF ищу элемент девтулом, и смотрю, на какой элемент ссылается при поднесении курсора.

На скриншоте - первый попавшийся пример, на что надо кликнуть по лого:

Чтобы перейти по ссылке надо кликнуть по ссылке. Ссылка это элемент ‘a’. Кликать надо на него.

1 Симпатия

в продолжение клика на элемент ‘a’

можно кликнуть на:
a#cl
a#im
a[href^=“http”] - начинается с http
a[href$=".pdf"] - заканчивается на .pdf
a[href*=“w3schools”] - содержит w3schools

А если говорить про последний скрин, то:
img[alt=‘Логотип’]
А ещё правильнее:
#logo img[alt=‘Логотип’]”

Это всё css локторы

а попробуй кликнуть сразу на id=“logo”, если ничё не произошло, то если нужна ссылка “http://vse.kz”, то кликай на a[href*=‘vse.kz’]

Бывает вариант

<img src="blabla" onClick="onclick()"><img>

Тогда точно на img.

да-да

У меня не стоит задача найти локатор для элемента или “вочтобытонистало” кликнуть по ссылке…
хотел узнать как максимально точно смоделировать ситуацию когда пользователь кликает по вложенному элементу в тег <a>.
Следующий код доказал, что нужно кликать по вложенному элементу:
<a href="https://www.google.com.ua/" onclick="alert('Click a')"> <img src="https://www.google.com.ua/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" onclick="alert('Click img')"> </a>
Т.е. сначала выскакивает алерт с текстом “'Click img”, а затем “Click a”. Точно также будет если вместо тега <img> будет <h1> и т.д.

Выше был мой комментарий с картинкой.
Доверьтесь девтулу.