我只想为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。我为客户结账按钮尝试了同样的事情,同样的问题也发生了。
任何建议都会很感激!
最佳, 路加
答案 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
库提供了两种类型的等待。
您只需根据自己的要求实施其中一项。
我建议你实现其中一个,然后尝试执行你的脚本。