我正在尝试使用我的凭据登录此页面:https://myibd.investors.com/secure/signin.aspx
当我"检查"它 - 我可以看到班级gigya-login-form
的形式
但是当我"查看来源"此表格不存在。我假设表单是通过JS(或类似的东西)加载的。我研究了SO,但没有一个解决方案有帮助。主要是人们建议等待页面加载
等待元素加载30秒的代码
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
url = 'https://myibd.investors.com/secure/signin.aspx'
driver = webdriver.Chrome()
driver.get(url)
myElem = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME, 'gigya-input-text')))
返回 TimeoutException:消息: - 这意味着该元素永远不会加载。
有人可以帮助我填写该表单并点击提交吗?谢谢!
UPD。我也试过进入iframe但是效果不好:(代码如下
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("signin-iframe"))
username = driver.find_element_by_name("username")
username.send_keys("my_user_name")
它扔了
ElementNotVisibleException:消息:元素不可见
(我尝试按照SO的想法显示它,但没有运气)
答案 0 :(得分:1)
表单位于iframe内部,因此为了能够处理切换到该iframe所需的输入字段:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("signin-iframe"))
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@aria-label="Email" and @placeholder="Email *"]')))
username.send_keys("my_user_name")
password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@aria-label="Password" and @placeholder="Password *"]')))
password.send_keys("my_password")
username.submit()