使用python

时间:2017-09-18 16:18:15

标签: python html selenium xpath

我必须使用python Selenium 在以下HTML代码中找到网页 id 输入标记

  

注意:由于其复杂性,我无法粘贴代码,因此很抱歉。 Here是查看完整HTML树的页面。

我想在下面提到的输入标记中插入用户名:

<input type="text" id="appleId" can-field="accountName" autocomplete="off" 
autocorrect="off" autocapitalize="off" aria-required="true" 
required="required" aria-labelledby="appleIdFieldLabel" spellcheck="false" 
autofocus="" ($focus)="appleIdFocusHandler()" 
($keyup)="appleIdKeyupHandler()" ($blur)="appleIdBlurHandler()" class="si-
text-field form-textbox " placeholder="Apple&nbsp;ID">

目前,我通过元素的 xpath 使用下面提到的代码,但它返回一个空列表:

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('http://www.icloud.com')
time.sleep(20)
ele = browser.find_elements_by_xpath('//*[@id="appleId"]')
# ele.send_keys('abc@icloud.com')
print ele

结果[]

我也尝试了所有其他查找功能,但无法获得任何结果。

1 个答案:

答案 0 :(得分:3)

位于iframe内的授权表单。为了能够处理输入字段,您应该切换到iframe

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

browser = webdriver.Chrome()
browser.get('http://www.icloud.com')

wait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it("auth-frame"))
account_name = wait(browser, 10).until(EC.presence_of_element_located((By.ID, "appleId")))
account_name.send_keys('abc@icloud.com')