Python webdriver从主窗口切换到弹出屏幕(不是Java警报)和登录

时间:2017-10-08 19:33:26

标签: webdriver

以下是我需要输入新密码并再次重复的窗口,然后点击“创建”。 enter image description here

到目前为止我的代码:

        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)

2 个答案:

答案 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]')
相关问题