问题描述
我正在尝试使用Selenium在Python上创建自动登录系统,但似乎无法单击使用Javascript代码发送登录详细信息的“登录”按钮。
有人可以让我知道如何通过单击“登录”按钮(似乎有更多链接)来发送填写的登录详细信息吗?
以下是包含“登录”按钮的div。
<div class="btn-login">
<p>
<a href="javascript:cmdButton_push(document.MypageLoginActionForm);">Login</a>
</p>
</div>
XPATH:
//*[@id="login-form"]/div[1]/p/a
我尝试过:
- 单击以找到XPATH
- 单击以找到文本“登录” 而且都没有用。
如有任何疑问,请告诉我。 预先感谢!
解决方法
要单击文本为登录的元素,可以使用以下任一Locator Strategies:
-
使用
link_text
:driver.find_element_by_link_text("Login").click()
-
使用
css_selector
:driver.find_element_by_css_selector("div.btn-login>p>a[href*='MypageLoginActionForm']").click()
-
使用
xpath
:driver.find_element_by_xpath("//div[@class='btn-login']/p/a[contains(@href,'MypageLoginActionForm') and text()='Login']").click()
理想情况下,要单击element_to_be_clickable()
的{{3}}元素,可以使用以下WebDriverWait之一:
-
使用
LINK_TEXT
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.LINK_TEXT,"Login"))).click()
-
使用
CSS_SELECTOR
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.btn-login>p>a[href*='MypageLoginActionForm']"))).click()
-
使用
XPATH
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='btn-login']/p/a[contains(@href,'MypageLoginActionForm') and text()='Login']"))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC