xpath返回多个结果,如何在python中处理

问题描述 投票:1回答:1

我已经使用python启动了selenium。我可以使用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()
python selenium-webdriver xpath
1个回答
1
投票

要详细说明我的评论,你会使用这样的列表:

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_xpathfind_element_by_xpath之间唯一真正的区别是第一个选项返回需要索引的列表。一旦它被索引,它就像你运行第二个选项一样工作!

© www.soinside.com 2019 - 2024. All rights reserved.