Спасибо за помощь.
Обычно я использовал Selenium 2,3, но сегодня я пытаюсь использовать Selenium 4, чтобы использовать новые функции Relative Locators
. Я делаю простое выражение поиска, но оно всегда возвращает странный объект, как показано ниже.
> print(driver.find_element(By.TAG_NAME, "a"))
{'ELEMENT': '0.4746792741017858-194'}
Или я нахожу кратные
> print(driver.find_elements(By.TAG_NAME, "a"))
[{'ELEMENT': '0.4746792741017858-178'}, {'ELEMENT': '0.4746792741017858-179'}]
Я ожидаю, что он вернет объект WebDriver, но это не так.
Вот изображение кода и операторы печати.
Кто-нибудь знает эту вещь?
Большое спасибо!
@cruisepandey То же самое, что и выше.
я запустил твой код
print(driver.find_element(By.TAG_NAME, "a"))
вывод на селен 3:
<selenium.webdriver.remote.webelement.WebElement (session = "251a91865546a6c66596a267e20688d1", element = "a36e87f3-bf6a-475c-82e4-07e4febe0dc5")>
вывод на селен 4:
[[ChromeDriver: chrome on WINDOWS (cbd87e312a3869b75a472d747371fd57)] -> tag name: a]
и ваше ожидание:
I expect it return WebDriver Object, but it doesn't
Обратите внимание, что driver.find_element(By.TAG_NAME, "a")
всегда будет возвращать веб-элемент. Он не вернет объект веб-драйвера.
на веб-элементе вы можете использовать метод .text
, .send_keys
, .click
и т. д.
Обновлять:
driver.get('https://www.google.com/')
driver.find_element(By.NAME, 'q').send_keys('etc')
Извините, я запутался между этими двумя понятиями (WebElement и WebDriver). Я точно имею в виду, что ожидаю, что он вернет WebElement. Я редактирую свой вопрос, пожалуйста, проверьте его, если у вас есть время.
Я использую EC2 для сканирования/селена. Он нормально работал на других устройствах EC2 и на моей локальной машине. Но не в этом устройстве.
эти два утверждения, которые вы указали в своем коде, вернут веб-элемент, и, поскольку это страница поиска Google, я знаю, что она будет нацелена на поле ввода поиска, которое присутствует в середине экрана. Вы не должны печатать веб-элемент. Вы должны использовать .send_keys
, чтобы отправить текст в строку поиска.
driver.find_element(By.Name, "q").send_keys('DFX Nguyễn')
вот так
Не работает, ошибка. 'dict' object has no attribute 'send_keys'
в основном он должен быть возвращен как веб-элемент, но такой словарь {'ELEMENT': '0.4746792741017858-194'}
Я здесь не для споров, вы могли бы использовать find_elements
вместо find_element
Я пытался использовать find_elements, но он тоже не работает, он возвращает Selenium 3: [{'ELEMENT': '0.6943835161376264-1'}]
, когда я его распечатываю. Я не хочу спорить, я так сожалею об этом.
Проверьте обновление выше, которое работает в моей локальной настройке.
спасибо за вашу любезную помощь, я нашел проблему. Спасибо.
Наконец-то я нашел ответ на этот вопрос. Это моя установка:
chromedriver: 71.0.3578.80
chromebrowser: 99.0
selenium: 4
По сути, я использую Selenium 4, который поддерживает только вышеуказанный chromedriver: > 92. Но мой chromedriver v.71 -> устарел.
Так вот почему это не совместимо. Поэтому, пожалуйста, проверьте версию chromedriver, если вы выбираете селен 4.
Что у вас есть в команде печати?