2013-11-21 6 views
0
variableName = driver.findElement(By.XPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]")) 

Запуск выше всегда кажется, приведет к ошибке:findElement XPath не поддерживается в Selenium VBA?

enter image description here

Почему это? Я всегда вижу, как другие люди используют findElement By XPath. Если это помогает, я создал около половины своего кода, используя функцию записи «Selenium». Затем я преобразовал код в «VBA/Webdriver», прежде чем вставлять его в Excel для использования в качестве макроса.

Что именно не так с моим кодом? Я использовал findElement несколько раз раньше, поэтому я должен был догадаться, что проблема связана с частью кода By.XPath ... Есть ли способ обойти это?

Редактировать: Even variableName = driver.findElementsByXPath(".//*[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]") приводит к ошибке «Неверный вызов или аргумент процедуры», даже если это выглядит хорошо для меня.

+0

Добавил мой полный код. – JimmyK

ответ

1

Try:

variableName = driver.findElementByXPath("//div[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]") 

Обратите внимание, что я удалил . в начале XPATH и заменил * с div. Кроме того, в конце вы ничего не пропустили. Вы просто объявляете путь здесь и не получаете значения.

EDIT: Обращаясь только к xPath, обычно недостаточно. Вы хотите выполнить действие над ним, получить текст внутри, тэг и т. Д.?

EDIT2: Тестирование, чтобы получить атрибут .Text, возвращает «findElement By XPath не поддерживается в Selenium VBA?» сообщение.

+0

Первое приводит к недействительной процедуре или вызову, а второй объект не поддерживает это свойство или метод ... Я собираюсь отредактировать в своем полном коде секунду, на случай, если что-то еще вызывает это. – JimmyK

+0

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

+0

@JimmyK: Именно. Ваше заявление, которое я не указывал ранее, является неполным. Это как указывать на адрес дома и не говорить, что вы хотите от дома. В качестве примера используйте отредактированный код выше ('.findElementByXPath ...') и добавьте '.TagName' до конца. Он должен возвращать самый непосредственный тег для вашего элемента, который является 'span'. – Manhattan

0

Вот что работает для меня:

Dim variableName() as variant 

variableName = driver.findElementsByXPath("//div[@id='T_F2']/fieldset/div[1]/div/div[4]/span[2]").getdata 

Обратите внимание, что это "найти элементы [множественное число] от XPath". Это создает двумерный массив. variableName (1,1) будет иметь данные, которые вы ищете.

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