0

Я работаю над Python с Selenium, и я создал экземпляр веб-драйвера со следующей командой driver = webdriver.Firefox(), и экземпляр веб-драйвера создан правильно.find_element_by_id не может найти элементы

После этого я пытаюсь получить элемент с идентификатором: str_title = driver.find_element_by_id("banner-section-title"). Но я получаю следующую ошибку:

NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"banner-section-title"} 
Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/driver-component.js:10299) 
    at FirefoxDriver.prototype.findElement (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/driver-component.js:10308) 
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/command-processor.js:12282) 
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/command-processor.js:12287) 
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpR0IR8T/extensions/[email protected]/components/command-processor.js:12229) 
+0

Вы уверены, что элемент с 'ид =' баннер-раздел-заголовка '' существует на странице? –

+0

Да, он присутствует, и когда я пытаюсь щелкнуть ссылку из моей тестовой таблицы, используя «Click Link id = banner-section-title», он работает нормально. Но когда я пытаюсь сделать то же самое из файла ключевых слов, который находится из .py-файла, я получаю вышеуказанную ошибку. – Madhuri

ответ

2

Прежде всего, вы должны быть уверены в том, что вы 'id', который вы ищете. По ошибке, которую вы опубликовали, кажется, что элемент не найден.

так что вы можете попробовать также использовать

driver.implicitly_wait(<seconds>) 

или

WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id(<element>).is_displayed()) 

попробовать это от импорта selenium.webdriver.support.ui WebDriverWait из selenium.webdriver.common.keys импорта Ключи

page="www.yourwebsite.com" 
self.driver = webdriver.Firefox() 
driver = self.driver 
driver.get(page) 
buffer = self.driver.find_element_by_id("foo") 

тогда, если есть ab utton можно добавить .send_keys (Keys.RETURN) (это мой пример для формы входа)

from selenium.webdriver.support.ui import WebDriverWait 
    from selenium.webdriver.common.keys import Keys 

    username="myUserName" 
    password="myPassword" 
    WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id("username").is_displayed() 
    textUserName = self.driver.find_element_by_id("username") 
    textUserName.send_keys(userName) 
    WebDriverWait(self.driver, 10).until(lambda s: s.find_element_by_id("password").is_displayed() 
    textPassword = self.driver.find_element_by_id("password") 
    textPassword.clear() 
    textPassword.send_keys(password) 
    btnLogin = self.driver.find_element_by_xpath("//input[@value='Login']") 
    btnLogin.send_keys(Keys.RETURN) 

Я надеюсь, что это может помочь

+0

благодарю много, что он отлично работает сейчас ... – Madhuri

+0

данный код работает нормально ... но перед созданием web instanc только я открываю свой url, используя ключевое слово Open Browser. Поэтому мне не нужно открывать URL-адрес после создания веб-экземпляра. Есть ли какой-либо другой способ работы с, включая driver.get (page), и сделать элементы идентифицированными – Madhuri

+0

, если вы не открываете URL-адрес, который вы не можете проверить, что находится, поэтому можно проверить только то, что находится на веб-странице. он с driver.get (страница) – ClaudioM