如何点击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. 点击查找文本";登录";两者都不起作用

如果您有任何问题,请告诉我。提前感谢!

要点击文本为Login的元素,您可以使用以下定位器策略之一:

  • 使用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()
    

理想情况下,要点击需要诱导WebDriverWait等待element_to_be_clickable()的元素,您可以使用以下定位器策略之一:

  • 使用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
    

最新更新