2014-01-17 2 views
0

Я новичок в Selenium и пытаюсь получить доступ и нажать ссылку «Изображение» на странице Google, как только он обыскал строку. Но я не могу этого сделать. Ниже в Selenium Python:Поиск элементов html через xpath в Selenium Python

driver = webdriver.Firefox() 
driver.get ('http://google.com') 
q = driver.find_element_by_xpath ("id('gbqfq')")  # Search text box 
q.send_keys ('Apple') 
driver.find_element_by_name ('btnG').click() 

# I am now going to access the 'Image' link through following comamnd 
driver.find_element_by_xpath ("id('hdtb_msb')/x:div[2]/x:a").click() 

Ошибка ниже:

selenium.common.exceptions.InvalidSelectorException: Message: u'The given selector id(\'hdtb_msb\')/x:div[2]/x:a is either invalid or does not result in a WebElement. The following error occurred:\nInvalidSelectorError: Unable to locate an element with the xpath expression id(\'hdtb_msb\')/x:div[2]/x:a because of the following error:\n[Exception... "An attempt was made to create or change an object in a way which is incorrect with regard to namespaces" 

Мои вопросы: 1. Почему приезжающие эта ошибка (я использую XPath Checker, чтобы получить XPath)? 2. Каковы другие возможные способы доступа к этой ссылке?

Спасибо!

После моего исследования:

Похоже, я должен поймать за ручку текущей страницы загружается? Пожалуйста, помогите мне, я совершенно новый.

+0

Я возьму здесь небольшой урок. Но здесь я использую «XPath Checker» и который может найти конкретный элемент (я могу его протестировать). Я не понимаю, почему это происходит? –

+0

@ user1177636 - Было бы полезно, если бы вы сказали ему, что случилось. –

+1

Ха, похоже, я уже оставил смешной комментарий по одному из его других вопросов. Справедливо. –

ответ

2

Попробуйте удалить пространство имен (то есть х :)

+0

Я считаю, что это решение, потому что сегодня я столкнулся с одной и той же проблемой, и это устраняется простым удалением пространства имен «x:». Однако я не знаю, почему XPath, предоставленный XPath Checker, имеет эту «х» вещь. – yaobin

0

Я считаю, что вы пытаетесь искать, но, может быть, XPath вы не передавать действительное значение. как правило, синтаксис XPath это один: .//*[@id='hdtb-msb']/div[2]/a

Я пошел к Google страницу и проверить изображение, например, и это является его XPath: .//*[@id='hplogo']

В любом случае я советую вам скачать поджигатель и firepath для firefox и с помощью этих инструментов вы получите нужный вам xpath

Смежные вопросы