【问题标题】:Clicking a button which is inside another element Selenium单击另一个元素 Selenium 内的按钮
【发布时间】:2021-01-31 17:37:51
【问题描述】:

HTML 快照:

您好,我想点击这个页面上标有登录的按钮,该按钮的html如下:

<button class="">Log In</button>

问题是这个代码在同一页面上有多个登录按钮,所以我想通过使用按钮所在容器的 id 来指定这个按钮:

<li id  = 'bs-bk-PP" class = "_2t6uLu"

如何使用这些属性找到并单击登录按钮。 谢谢

【问题讨论】:

  • 注意:我添加了一个屏幕截图,说明我检查元素时代码的显示方式

标签: python selenium selenium-webdriver xpath webdriverwait


【解决方案1】:

要点击文本为登录的元素,您可以使用以下任一Locator Strategies

  • 使用xpath

    driver.find_element(By.XPATH, "//li[@id='bs-bk-PP']//button[@class and text()='Log In']").click()
    

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

  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@id='bs-bk-PP']//button[@class and text()='Log In']"))).click()
    
  • 注意:您必须添加以下导入:

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

【讨论】:

  • 谢谢,但这会选择页面上的错误登录按钮。根据我最初的问题,如何包含正确容器的 ID?
  • @Eglantine46 你能用包含它的父元素的基于文本的完整 HTML 来更新问题吗?
  • 你能看到问题中html代码的截图吗?我无法选择所有 html 代码,因为它包含在不同的 Div 中,是否可以先使用 ID = bs-bk-PP 选择元素,然后从该元素中单击使用“//button [@ class and text()='Log In']" 如上所述?
  • @Eglantine46 查看更新的答案并告诉我状态
  • @Eglantine46 很高兴能为您提供帮助。 Vote up questions and answers 您发现这对未来读者的利益很有帮助。见Why is voting important
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
相关资源
最近更新 更多