简体   繁体   中英

object of type 'WebElement' has no len() selenium python

I want to populate a mobile number form filed using python selenium. But when I am trying to populate the mobile number form filed with a mobile number its giving me this error: TypeError: object of type 'WebElement' has no len()

Here's the portion which is giving me error:

# mobile number
number  = 6266644446
rs_number = driver.find_element(By.XPATH, '//*[@id="zed_user_form"]/div/div[1]/div[2]/div/div/div[1]/form/div[4]/div[2]/div/div[2]/div/input')

rs_number.send_keys(rs_number)

Here's the full code:

from sre_parse import State
from tkinter.tix import Select
from selenium import webdriver

from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

import time

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)


driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), chrome_options=chrome_options)

driver.get("https://ssg2021.in/citizenfeedback")

time.sleep(5)
# selcting states
state_select = driver.find_element(By.XPATH,'//*[@id="State"]')
drp1 = Select(state_select)

drp1.select_by_visible_text('Chhattisgarh')

time.sleep(3)


# selecting district
district_select = driver.find_element(By.XPATH,'//*[@id="District"]')
drp2 = Select(district_select)

drp2.select_by_visible_text('RAJNANDGAON')

time.sleep(3)

# selecting the age
age_num  = "22"
age = driver.find_element(By.XPATH, '//*[@id="zed_user_form"]/div/div[1]/div[2]/div/div/div[1]/form/div[4]/div[1]/div/div/input')

age.send_keys(age_num)

time.sleep(3)


# name
name  = "ramlal"
rs_age = driver.find_element(By.XPATH, '//*[@id="zed_user_form"]/div/div[1]/div[2]/div/div/div[1]/form/div[4]/div[2]/div/div[1]/div/input')

rs_age.send_keys(name)

time.sleep(3)


# mobile number
number  = 6266644446
rs_number = driver.find_element(By.XPATH, '//*[@id="zed_user_form"]/div/div[1]/div[2]/div/div/div[1]/form/div[4]/div[2]/div/div[2]/div/input')

rs_number.send_keys(rs_number)


# gender
gender = driver.find_element(By.XPATH,'//*[@id="zed_user_form"]/div/div[1]/div[2]/div/div/div[1]/form/div[4]/div[2]/div/div[3]/div/select')
rs_gender = Select(gender)

drp2.select_by_visible_text('Male')

send_keys() method accepts string while you defined number as an integer.
So instead of

number  = 6266644446

it should be

number  = "6266644446"

And the main problem here is that you are trying to send the web element itself with send_keys() method.
So your code should be

number  = "6266644446"
rs_number = driver.find_element(By.XPATH, '//*[@id="zed_user_form"]/div/div[1]/div[2]/div/div/div[1]/form/div[4]/div[2]/div/div[2]/div/input')

rs_number.send_keys(number)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM