我对此完全陌生。
我正在关注我可以在这里找到的示例并写下以下内容:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
thisDirectory = 'my directory'
waitTime = 20
URL_entry = "https://www.capitaliq.com"
username = "my username"
password = "my password"
browser = webdriver.Chrome(executable_path=thisDirectory +
'\\chromedriver.exe')
browser.get(URL_entry)
userNameBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.XPATH, '//input[@id="txtUsername"]'))
)
userNameBox.send_keys(username)
passwordBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.XPATH, '//input[@id="txtPwd"]'))
)
passwordBox.send_keys(password)
loginButton = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.XPATH, '//input[@name="butSignin"]'))
)
loginButton.click()
time.sleep(waitTime)
我还尝试了一些其他略有不同的方法,但总是收到错误消息:raise TimeoutException(message,screen,stacktrace) TimeoutException:消息:
这是我第一次在这里发帖,抱歉,如果我做了任何不合适的事情。任何帮助将不胜感激。非常感谢。
答案 0 :(得分:1)
您使用错误的定位器:https://www.capitaliq.com登录页面上没有id
属性"txtUsername"
,"txtPwd"
,"butSignin"
的元素...
请尝试以下行:
userNameBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.ID, 'username'))
)
userNameBox.send_keys(username)
passwordBox = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.ID, 'password'))
)
passwordBox.send_keys(password)
loginButton = WebDriverWait(browser, waitTime).until(
EC.presence_of_element_located((By.ID, 'myLoginButton'))
)
loginButton.click()
请注意,授权表单中元素的定位符对于所有网站都不相同。要获得准确定位器,您可以
右键点击浏览器中的元素 - >选择“Inspect element” - >检查目标元素的源代码...在那里,您可以找到唯一的id
/ name
值或您可以使用的其他属性to locate element