Я пытаюсь выполнить этот код, и он показывает эту ошибку «NoSuchElementException». Так может ли кто-нибудь мне в этом помочь?
Код:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver= webdriver.Chrome()
page=driver.get("http://www.awgp.org")
banner_tell=driver.find_element_by_Link_text('Tell Me More')
banner_tell.click()






Я думаю, все, что вам нужно сделать, это указать текст ссылки в верхнем регистре, но эта ссылка динамическая, поскольку баннер автоматически перемещается к следующему.
Вы должны придумать другой локатор, чтобы щелкнуть именно по тому локатору, по которому вы хотите щелкнуть. В противном случае вы можете получить ElementNotVisibleException при смене баннера.
banner_tell=driver.find_element_by_link_text('TELL ME MORE')
@ Андерссон: Спасибо! Ссылки являются динамическими, и их атрибут отображения устанавливается на none при отображении следующего баннера. Таким образом, если баннер будет изменен до того, как по нему щелкнули, возникнет исключение.
Да, но если ссылка не видна, она не будет найдена find_element_by_link_text(), поэтому следует поднять NoSuchElementException вместо ElementNotVisibleException ...
Спасибо @Amit. «СКАЗАТЬ МНЕ БОЛЬШЕ» работает нормально, поскольку он находит текст на всей странице, на которую я пытался найти ссылку в баннере.
попробуйте с xpath
banner_tell= driver.find_element_by_xpath("//*[contains(text(),'TELL ME MORE')]")
Я не могу найти элемент с помощью xpath. banner_tell = driver.find_element_by_xpath ("// input [содержит (@ text, 'СКАЖИТЕ МНЕ БОЛЬШЕ')]")
Кажется, вы были почти рядом, но function() должен был быть:
find_element_by_link_text()
Чтобы щелкнуть по кнопке с текстом РАССКАЖИТЕ БОЛЬШЕ, вы должны вызвать WebDriverWait с предложением ожидаемые_условияelement_to_be_clickable следующим образом:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "TELL ME MORE"))).click()
find_element_by_link_text()возвращает только видимые элементы, так что вы все равно не получитеElementNotVisibleException... Также да, следует использовать'TELL ME MORE', поскольку именно так текст ссылки отображается на странице (+1)