无法解析"名字"来自网页

时间:2017-06-19 17:46:04

标签: python selenium xpath selenium-webdriver web-scraping

我如何获得"名字"来自我脚本中的目标页面。我尝试过如下,但它会引发以下错误:

"selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "//div[@class="div_input_place"]/input[@id="txt_name"]/@value" is: [object Attr]. It should be an element."

然而,"名字"我之后:

<div class="div_input_place">
                                                <input name="txt_name" type="text" value="CLINTO KUNJACHAN" maxlength="20" id="txt_name" disabled="disabled" tabindex="2" class="aspNetDisabled textboxDefault_de_active_student">
                                            </div>

到目前为止我尝试过的脚本:

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("https://www.icaionlineregistration.org/StudentRegistrationForCaNo.aspx")
driver.find_element_by_id('txtRegistNo').send_keys('SRO0394294')
driver.find_element_by_id('btnProceed').click()
time.sleep(5)
name = driver.find_element_by_xpath('//div[@class="div_input_place"]/input[@id="txt_name"]/@value')
print(name.text)
driver.quit()

2 个答案:

答案 0 :(得分:3)

Selenium不支持此语法。您的XPath表达式应仅返回WebElement,但不返回属性值或文本。请尝试使用以下代码:

name = driver.find_element_by_xpath('//div[@class="div_input_place"]/input[@id="txt_name"]').get_attribute('value')
print(name)

答案 1 :(得分:3)

您无法使用Selenium中的XPath定位属性 - 表达式必须始终与实际元素匹配:

driver.find_element_by_css_selector('.div_input_place input#txt_name')

请注意,我还会切换到更简洁易读的CSS选择器:

driver.find_element_by_id("txt_name")

或者,如果您的ID是唯一的,甚至可以使用“按ID查找”:

pip install scikit-bio==0.4.2