如何点击Selenium上的javascript链接?

问题描述

我正在尝试使用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

我尝试过:

  1. 单击以找到XPATH
  2. 单击以找到文本“登录” 而且都没有用。

如有任何疑问,请告诉我。 预先感谢!

解决方法

要单击文本为登录的元素,可以使用以下任一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