到目前为止我的代码:
createLogin = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="Item.MessageUniqueBody"]/div/div/div/div/div[2]/div[2]/a')))
createLogin.click()
time.sleep(10)
try:
newPassword = self.driver.find_elements_by_xpath('//*[@id="editNewUser_newPassword"]')
newPassword1 = self.driver.find_elements_by_xpath('//*[@id="editNewUser_newPasswordRepeat"]')
newPasswordForm = self.driver.find_elements_by_xpath('//*[@id="editNewUserPasswordForm"]/table/tbody/tr[1]/td[1]')
self.driver.switch_to.active_element(newPasswordForm)
time.sleep(3)
newPassword.send_keys('123')
newPassword1.send_keys('123')
time.sleep(2)
# createLog = wait.until(
# EC.presence_of_element_located((By.XPATH, '//*[@id="editNewUserPassword_save"]')))
# createLog.click()
# time.sleep(5)
except NoAlertPresentException as e:
time.sleep(2)
myAccount = wait.until(
EC.presence_of_element_located((By.XPATH, '//*[@id="easMyAccount1"]')))
myAccount.click()
time.sleep(5)
答案 0 :(得分:1)
这就是问题所在。
您使用的是find_elements_by_xpath
而不是find_element_by_xpath
复数 vs 单数。
find_elements_by_xpath :它为您提供了具有匹配标识符的Web元素列表。
find_element_by_xpath :它为您提供了第一个具有匹配标识符的Web元素。
newPassword = self.driver.find_element_by_xpath('//*[@id="editNewUser_newPassword"]')
newPassword1 = self.driver.find_element_by_xpath('//*[@id="editNewUser_newPasswordRepeat"]')
newPasswordForm = self.driver.find_element_by_xpath('//*[@id="editNewUserPasswordForm"]/table/tbody/tr[1]/td[1]')
答案 1 :(得分:0)
@gauurang答案是对的,但是您必须使用find_element_by_xpath
,同时因为您的xpath建议您id
找到webelements所以最好使用id
而不是xpath
{1}}
你的xpath也是正确的
newPassword = self.driver.find_element_by_id('editNewUser_newPassword')
newPassword1 = self.driver.find_element_by_id('editNewUser_newPasswordRepeat')
newPasswordForm = self.driver.find_element_by_xpath('//*[@id="editNewUserPasswordForm"]/table/tbody/tr[1]/td[1]')