Новичок в Python, Selenium и программировании, если уж на то пошло.
Я пытаюсь автоматизировать селен, чтобы перейти по определенной ссылке. В этом случае я хочу, чтобы он попал по ссылке, связанной с текстом ссылки «B»:
<li><a href="javascript:__doPostBack('ctl00$IndexControl1','B')">B</a>
на этом сайте:
Я использую этот код:
def get_single_link_using_find_elements_by_link_name(url, link_name):
driver = webdriver.Firefox()
driver.get(url)
driver.implicitly_wait(10)
time.sleep(20)
element = driver.find_element_by_link_text(link_name)
element.click()
Я добавил несколько условий ожидания, так как думал, что проблема могла быть в рендеринге, но они не помогли.
Я получаю следующую ошибку:
Traceback (most recent call last):
File "C:\Python27\programs\selenium commands.py", line 50, in <module>
get_single_link_using_find_elements_by_link_name(url, link_name)
File "C:\Python27\programs\selenium commands.py", line 47, in get_single_link_using_find_elements_by_link_name
element = driver.find_element_by_link_text(link_name)
File "C:\Python27\lib\site-packages\selenium-2.25.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 237, in find_element_by_link_text
return self.find_element(by=By.LINK_TEXT, value=link_text)
File "C:\Python27\lib\site-packages\selenium-2.25.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 671, in find_element
{'using': by, 'value': value})['value']
File "C:\Python27\lib\site-packages\selenium-2.25.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 156, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium-2.25.0-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 147, in check_response
raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: u'Unable to locate element: {"method":"link text","selector":"B"}'
Как ни странно, тот же код РАБОТАЕТ на следующем URL-адресе, который является частью того же сайта: http://www.lw.com/people?searchIndex=A
Любые идеи?
find_element_by_link_text
и.click()
указывают видимые объекты.find_element_by_link_text
ничего не вернет, если текст не отображается в браузере. Просто потому, что он находится в источнике, он не отображается в браузере. Ссылка B, о которой вы говорите, является частью кнопки «Поиск людей» с включенным javascript в верхней части экрана. Вам нужно использоватьdriver.find_element_by_id("PeopleFinderLink")
и ЗАТЕМdriver.find_element_by_link_text("B").click()
, чтобы перейти по нужной ссылке. 16.10.2012