找不到网页元素

时间:2016-08-04 03:02:37

标签: python selenium-webdriver

我只想为Apple网站编写一个简单的登录脚本: Sign In

无法正确找到ID和密码表单。 实际上,我尝试过很多东西:

 driver.find_element_by_xpath("//*[@type='email']")

 driver.find_element_by_xpath("//*[@name='login-appleId']")

 driver.find_element_by_xpath("//*[@id='login-appleId']")

我在这个页面中找不到任何iframe。我为客户结账按钮尝试了同样的事情,同样的问题也发生了。

任何建议都会很感激!

最佳, 路加

3 个答案:

答案 0 :(得分:1)

你可以按照这个代码..它的工作.. !!

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('E:\chromedriver.exe') #location
driver.get('url') #https://secure2.store.apple.com/shop/sign_in?c=aHR0cDovL3d3dy5hcHBsZS5jb20vc2hvcC9iYWd8MWFvczVjNGU3ZWNjZjgwODVjNWY4NDk0OTA0ODJhMDc2Y2FkNmU3ODJkOTE&o=O01LV0gy&r=SXYD4UDAPXU7P7KXF&s=aHR0cHM6Ly9zZWN1cmUyLnN0b3JlLmFwcGxlLmNvbS9zaG9wL2NoZWNrb3V0L3N0YXJ0P3BsdG49RkNBRjZGQjR8MWFvczAyZmZkZjQwNTgwOGI4ZTNkMDQ5MWRiM2NmZmExYTgxNzRkZTllMjY&t=SXYD4UDAPXU7P7KXF&up=t

def find_by_xpath(locator):
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, locator))
    )
   return element
class FormPage(object):
    def fill_form(self, data):
        find_by_xpath('//input[@name = "login-appleId"]').send_keys(data['usr')
        find_by_xpath('//input[@name = "login-password"]').send_keys(data['pwd'])
        return self 

    def submit(self):
        find_by_xpath('//input[@id = "sign-in"]').click()

 data = {
       'usr': 'xx@apple.com',
       'pwd': 'xxxx'
       }

if __name__=="__main__":
     FormPage().fill_form(data).submit()
     driver.quit() # closes the webbrowser

希望它对你有所帮助 谢谢!

答案 1 :(得分:0)

我建议你尝试以下方法:

driver.find_element_by_id("login-appleId")
driver.find_element_by_id("login-password")

答案 2 :(得分:0)

有时在WebDriver中有些情况WebElement未在DOM上正确加载并且webdriver尝试找到它。因此,为了处理这类场景,WebDriver库提供了两种类型的等待。

您只需根据自己的要求实施其中一项。

  1. Implicit Waits
  2. Explicit Waits
  3. 我建议你实现其中一个,然后尝试执行你的脚本。