【问题标题】:How to click on a javascript link on Selenium?如何单击 Selenium 上的 javascript 链接?
【发布时间】:2020-11-12 10:28:28
【问题描述】:

我正在尝试使用 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. 点击找到文本“登录” 都没有工作。

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

【问题讨论】:

  • id="login-form" 的元素在哪里?
  • 贴出你试过的代码。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要点击文本为 Login 的元素,您可以使用以下任一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()
    

理想情况下,点击您需要为WebDriverWait 诱导element_to_be_clickable() 的元素,您可以使用以下任一Locator Strategies

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多