【问题标题】:Click on a href点击一个href
【发布时间】:2018-12-03 23:31:24
【问题描述】:

我正在尝试创建一个自动登录脚本。我已经完成了第一步,上网,填写用户名和密码,然后按一个按钮。

现在我需要转到另一个页面,该页面有一个 href 代码,但我不知道如何或需要输入什么才能转到此 href

我正在尝试这个

browser.find_element_by_xpath("//input[@href='Consulta de Medidas']").click()

这里的代码来自网络:

<a href="/consulta-de-medidas/">Consulta de Medidas</a>

但它不起作用

谁能帮帮我??

【问题讨论】:

  • browser.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='Consulta de Medidas'])[1]/following::nav[1]").click()试试katalon生成的
  • 你的href是'/consulta-de-medidas/'not 'Consulta de Medidas'
  • python 向我显示此消息: Traceback(最近一次调用最后一次):文件“/Users/rogarui/Desktop/Python/facturas_green.py”,第 23 行,在 browser.find_element_by_xpath(" (.//*[normalize-space(text()) and normalize-space(.)='Consulta de Medidas'])[1]/following::nav[1]").click() File "/Library /Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py”,第 394 行,在 find_element_by_xpath 中返回 self.find_element(by=By.XPATH, value= xpath)

标签: python python-3.x selenium xpath css-selectors


【解决方案1】:

使用以下任一解决方案:

  • 使用link_text

    browser.find_element_by_link_text("Consulta de Medidas").click()
    
  • 使用selector

    browser.find_element_by_css_selector("a[href*='consulta-de-medidas']").click()
    
  • 使用xpath

    browser.find_element_by_xpath("//a[@href='/consulta-de-medidas/' and contains(.,'Consulta de Medidas')]").click()
    

更新

您可能需要诱导 WebDriverWait 以使所需的元素可点击,您可以使用以下任一解决方案:

  • 使用LINK_TEXT

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Consulta de Medidas"))).click()
    
  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href*='consulta-de-medidas']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@href='/consulta-de-medidas/' and contains(.,'Consulta de Medidas')]"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

【讨论】:

  • python 向我展示了这个: Traceback(最近一次调用最后一次):文件“/Users/rogarui/Desktop/Python/facturas_green.py”,第 23 行,在 browser.find_element_by_xpath("/ /a[@href='/consulta-de-medidas/' 和 contains(.,'Consulta de Medidas')]").click() 文件 "/Library/Frameworks/Python.framework/Versions/3.7/lib/ python3.7/site-packages/selenium/webdriver/remote/webelement.py",第 80 行,点击 self._execute(Command.CLICK_ELEMENT)
  • @rogarui 查看我更新的答案并告诉我状态
  • 首先感谢您的帮助 Traceback(最近一次调用最后一次):文件“/Users/rogarui/Desktop/Python/facturas_green.py”,第 23 行,在 WebDriverWait(browser, 20) .until(EC.element_to_be_clickable((By.XPATH, "//a[@href='/consulta-de-medidas/' and contains(.,'Consulta de Medidas')]"))).click() 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/support/wait.py”,第 80 行,直到引发 TimeoutException(消息,屏幕,堆栈跟踪)硒.common.exceptions.TimeoutException:消息:
  • @rogarui TimeoutExceptionfailed expected-conditions 的结果。通过find_element_by_*time.sleep() 一起调试您的代码。如果您能够找到该元素,请使用观察结果更新问题。
猜你喜欢
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 2010-12-30
  • 2017-08-19
相关资源
最近更新 更多