2016-08-08 23 views
0

我需要在表单提交后得到响应页面,但我有空表单域的同一页面。我正在尝试使用time.sleep(),但它没有帮助。如何在seh验证后获取响应页面?

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import time 

phantom_js_executable_path = './bin/phantomjs.exe' 
user_agent = (
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.37 (KHTML, like Gecko) Chrome/54.0.2705.89 Safari/536.37" 
) 

dcap = dict(DesiredCapabilities.PHANTOMJS) 
dcap["phantomjs.page.settings.userAgent"] = user_agent 

def main(): 
    driver = webdriver.PhantomJS(executable_path = phantom_js_executable_path) # or add to your PATH 
    driver.get('http://any.syte.my/login') 
    user_name = driver.find_element_by_id("username") 
    user_name.send_keys("user") 
    password = driver.find_element_by_id("password") 
    password.send_keys("pass") 
    driver.find_element_by_name('continue').click()#form button submit 
    #time.sleep(10) 
    driver.save_screenshot('screen.png') # save a screenshot to disk 


if __name__ == '__main__': 
    main() 

回答

0

您需要在提交用户名和密码后等待页面中的元素。

ff = webdriver.Firefox() 
ff.get("http://somedomain/url_that_delays_loading") 
try: 
    element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement"))) 
finally: 
    ff.quit() 

这是http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp

+0

'http:// somedomain/url_that_delays_loading'是它成功认证后允许我的url吗? – Someone

+0

这只是一个例子。您应该在'尝试'块之后使用该部分。因此,您必须用成功验证后获得的页面中显示的元素ID替换'driver'和'myDynamicElement'的'ff'。 –

+0

我替换它,我的代码如下所示:https://ghostbin.com/paste/qq9xz但它不起作用。 – Someone

0

将下面的代码等因素出现后,你的提交,如果该元素不位于将失败。

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

WebDriverWait(self.driver, 10).until(
       EC.presence_of_element_located(By.ID, elementFromNewPage)) 
driver.save_screenshot('weee.png') 
+0

在重新加载表单子目录页后,该代码不适用于我。开发人员可以检测到硒使用? – Someone

相关问题