xpath возвращает более одного результата, как обрабатывать в Python - PullRequest
1 голос
/ 16 апреля 2019

Я начал селен, используя python.Я могу изменить текст сообщения, используя find_element_by_id.Я хочу сделать то же самое с find_element_by_xpath, которая не удалась, поскольку xpath имеет два экземпляра.Я хочу попробовать это, чтобы узнать о xpath.

Я хочу сделать очистку страницы с помощью python, в которой мне нужна ясность в использовании Xpath, в основном необходимом для перехода на следующую страницу.

#This code works:
import time
import requests
import requests
from selenium import webdriver
driver = webdriver.Chrome()
url = "http://www.seleniumeasy.com/test/basic-first-form-demo.html"
driver.get(url)
eleUserMessage = driver.find_element_by_id("user-message")
eleUserMessage.clear()
eleUserMessage.send_keys("Testing Python")
time.sleep(2)
driver.close()
#This works fine. I wish to do the same with xpath. 
#I inspect the the Input box in chrome, copy the xpath '//*[@id="user-message"]' which seems to refer to the other box as well.
# I wish to use xpath method to write text in this box as follows which does not work.

driver = webdriver.Chrome()
url = "http://www.seleniumeasy.com/test/basic-first-form-demo.html"
driver.get(url)
eleUserMessage = driver.find_elements_by_xpath('//*[@id="user-message"]')
eleUserMessage.clear()
eleUserMessage.send_keys("Test Python")
time.sleep(2)
driver.close()

1 Ответ

1 голос
/ 16 апреля 2019

Для уточнения моего комментария вы должны использовать такой список:

eleUserMessage_list = driver.find_elements_by_xpath('//*[@id="user-message"]')
my_desired_element = eleUserMessage_list[0] # or maybe [1]
my_desired_element.clear()
my_desired_element.send_keys("Test Python")
time.sleep(2)

Единственная реальная разница между find_elements_by_xpath и find_element_by_xpath заключается в том, что первая опция возвращает список, который необходимо проиндексировать.Как только он проиндексирован, он работает так же, как если бы вы запустили второй вариант!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...