【问题标题】:Simple question for Selenium 'find_element_by_XPath'Selenium 'find_element_by_XPath' 的简单问题
【发布时间】:2021-05-17 10:10:29
【问题描述】:
我对 Python 非常陌生,我想尝试为以下凭据进行银行自动化:
https://olb.ccb.com/CCBIS/V6/STY4/B5/login_hk.jsp
我尝试使用以下代码将登录 ID 发送到屏幕,但它显示以下错误:
driver.find_element_by_xpath('/html/body/form[1]/div/table/tbody/tr[2]/td/div/input').send_keys('abcd_1234')
selenium.common.exceptions.NoSuchElementException: 消息:没有这样的
元素:无法定位元素:
{"method":"xpath","selector":"/html/body/form1/div/table/tbody/tr2/td/div/input"}
有人可以帮我如何将密钥发送到输入吗?
谢谢!
【问题讨论】:
标签:
python
selenium
selenium-webdriver
xpath
【解决方案1】:
改用以下 XPATH:
driver.find_element_by_xpath("//INPUT[@id='USERID']").send_keys("abcd_1234")
【解决方案2】:
如果您更关心使用 webdriver 等待的稳定性和速度,则更理想的方法是。
wait = WebDriverWait(driver, 10)
driver.get("https://olb.ccb.com/CCBIS/V6/STY4/EN/login_hk.jsp")
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "fclogin")))
wait.until(EC.element_to_be_clickable((By.ID, "USERID"))).send_keys("admin")
wait.until(EC.element_to_be_clickable((By.ID, "LOGPASS"))).send_keys("admin")
driver.switch_to.default_content()
导入
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
【解决方案3】:
我检查了网站,发现问题不仅是因为您的 xpath。
登录名放在另一个 iframe 中。因此,您需要切换到该 iframe 才能将密钥发送到登录名和密码字段。此外,您应该使用 id 而不是绝对 xpath。
试试下面的代码。我已经对其进行了测试,所以它应该可以工作。
driver.get("https://olb.ccb.com/CCBIS/V6/STY4/EN/login_hk.jsp")
iframe = driver.find_element_by_id("fclogin")
driver.switch_to.frame(iframe)
time.sleep(2)
driver.find_element_by_id("USERID").send_keys("admin")
time.sleep(2)
driver.find_element_by_id("LOGPASS").send_keys("admin")
time.sleep(2)
driver.switch_to.default_content()
driver.quit()