我设法编写了一个程序,可以导航到所需的网站,然后单击要填写的第一个文本框。我遇到的问题是我使用的send_keys方法未使用“测试”填写所需的文本框,并且我收到此错误:
AttributeError: 'NoneType' object has no attribute 'find_elements_by_xpath'
这是到目前为止的代码:
import selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as Wait
from selenium.webdriver.support import expected_conditions
driver = selenium.webdriver.Chrome(executable_path='path_to_chromedriver')
def get_url(url):
driver.get(url)
driver.maximize_window()
Wait(driver, 30).until(expected_conditions.presence_of_element_located
((By.ID, 'signup-button'))).click()
def fill_data():
sign_up = Wait(driver, 30).until(expected_conditions.presence_of_element_located
((By.XPATH,
'/html/body/onereg-app/div/onereg-form/div/div/form/section/section['
'1]/onereg-alias-check/ '
'fieldset/onereg-progress-meter/div[2]/div[2]/div/pos-input[1]'))).click()
sign_up.send_keys('Testing')
get_url('https://www.mail.com/')
# Find the signup element
fill_data()
答案 0 :(得分:0)
find_elements_by_xpath`返回所有匹配的元素,这是一个列表,因此您需要遍历并获取每个元素的文本属性
此外,在填充数据方法中,您尝试填充注册表单的数据,因此您需要标识该表单上的所有元素,并使用表单和数据进行处理。
在填写电子邮件ID时,您的xpath不正确,请更新您的xpath并重试
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.ui import WebDriverWait as Wait
# Open Chrome
driver = webdriver.Chrome(executable_path='path_to_chromedriver')
def get_url(url):
driver.get(url)
driver.maximize_window()
def fill_data():
Wait(driver, 30).until(EC.element_to_be_clickable
((By.ID, 'signup-button'))).click()
inputBox = Wait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "/html/body/onereg-app/div/onereg-form/div/div/form/section/section[1]/onereg-alias-check/fieldset/onereg-progress-meter/div[2]/div[2]/div/pos-input[1]/input")))
inputBox.send_keys('Testing')
get_url('https://www.mail.com/')
# Find the signup element
fill_data()