2015-10-14 91 views
1

我试图在python中导航selenium以将文本发送到Indeed网站示例测试页上的输入字段(单击“应用”以查看带有输入字段名称,电话,电子邮件,求职信等)selenium RC(python)遇到嵌套iframe问题

http://www.indeed.ca/cmp/HD-GROUP/jobs/Regional-Representative-a72711272aba6984?sjdu=vQIlM60yK_PwYat7ToXhk40tHzG2V8PFLUkYNu3gUARzMPxmzfYNIZhnUOBL3fqJ0waO2mcYR2CrxwZY5aM-JSDuEjnVcDU8mqRWS8wbyaI

我意识到我需要告诉硒切换到该iframe的问题其实是有两项。

我有下面的XML路径:

//*[@id="indeed-ia-1444850868596-1-modal-iframe"] <-- first iframe 

/html/body/iframe <-- second iframe 

//*[@id="apply_form"] <-- form 

输入:

//*[@id="form_container"]/div[2]/div[1]/div[1]/div[1] 
//*[@id="form_container"]/div[2]/div[1]/div[1]/div[1]/div[1]/div 
//*[@id="phone_container"] 
//*[@id="form_container"]/div[2]/div[1]/div[1]/div[1]/div[2] 

我怎么把这些东西放在一起?

回答

0

这里的想法是点击“Apply Now”按钮,等待iframe成为存在,然后切换到它,然后切换到内部iframe,找到输入框并发送密钥。工作示例:

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


driver = webdriver.Chrome() 
driver.get("http://www.indeed.ca/cmp/HD-GROUP/jobs/Regional-Representative-a72711272aba6984?sjdu=vQIlM60yK_PwYat7ToXhk40tHzG2V8PFLUkYNu3gUARzMPxmzfYNIZhnUOBL3fqJ0waO2mcYR2CrxwZY5aM-JSDuEjnVcDU8mqRWS8wbyaI") 

driver.find_element_by_css_selector("a.indeed-apply-button").click() 

wait = WebDriverWait(driver, 20) 
frame = wait.until(EC.presence_of_element_located((By.TAG_NAME, "iframe"))) 

driver.switch_to.frame(frame) 
driver.switch_to.frame(0) 

driver.find_element_by_id("applicant.name").send_keys("test")