当前位置: 首页 > 知识库问答 >
问题:

等到在Selenium WebDriver中单击按钮后再单击下一个按钮?

东方嘉佑
2023-03-14

在我的程序中,它将单击浏览器中的一个按钮,并且在该页面中,应该会出现另一个按钮。出现该按钮后,我的程序将立即运行下一个操作来单击下一个按钮。我目前收到此错误:

ElementNotVisibleException:消息:元素不可见

因此,我假设我正在调用该操作,以便在该按钮出现之前单击下一个按钮。我的问题是,我该怎么做才能让我的程序等到我可以点击按钮,再点击按钮?

driver.find_element_by_xpath('//*[@id="add-remove-buttons"]/input').click()
driver.find_element_by_xpath('//*[@id="cart"]/a[2]').click()

这就是我的程序底部的代码的样子。我需要能够等到第二个操作可以完成第二个操作。感谢所有的帮助!

共有2个答案

蔺宇
2023-03-14

根据您的问题,我们尝试在两个按钮上调用click()方法,因此我们将诱导显式等待,即WebDriverWaitexpected_conditions如下element_to_be_clickable

firstButton = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(By.XPATH,"//*[@id='add-remove-buttons']/input"))
firstButton.click()
secondButton = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(By.XPATH,"//*[@id='cart']/a[2]"))
secondButton.click()
公冶经纶
2023-03-14

您正在寻找硒Waits。本质上,你想点击一个按钮,等待另一个按钮出现,然后点击它。这里回答了一个类似的问题:Selenium waitForElement。

您可以这样做(未经测试的代码):

import contextlib
import selenium.webdriver as webdriver
import selenium.webdriver.support.ui as ui

with contextlib.closing(webdriver.Firefox()) as driver:
    driver.get('http://example.com')
    wait = ui.WebDriverWait(driver,10)

    driver.find_element_by_xpath('//*[@id="add-remove-buttons"]/input').click()

    # Wait until the element appears
    wait.until(lambda driver: driver.find_element_by_xpath('//*[@id="cart"]/a[2]'))
    driver.find_element_by_xpath('//*[@id="cart"]/a[2]').click()

你可能需要摆弄这个。我发现每当我使用< code>wait时,都需要一段时间才能正确使用。可以使用< code > driver . save _ screen shot 进行调试

 类似资料:
  • 我正试图让JQuery在按下下一个按钮时自动单击该按钮。在互联网上,我发现应该是这样的(查看JQuery部分)。但由于某种原因,它不起作用。 它们必须在同一个代码中吗? 我尝试过的:JQuery: 表单中的按钮1 HTML: 表单中的按钮2 HTML:

  • 编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,

  • 链接到我正在尝试刮取的页面: https://www.nytimes.com/reviews/dining 因为这个页面有一个“show more”按钮,所以我需要Selenium自动反复单击“show more”按钮,然后以某种方式使用Beauty soup来获取页面上每个餐厅评论的链接。在下面的照片中,我想获取的链接位于https://...onigiri.html" 迄今为止的代码: 我如何

  • 我正试图抓取一个页面,获取一盘国际象棋的移动列表,该列表位于右侧菜单的“移动”选项卡下。 在浏览器中手动单击“移动”选项卡时,我可以通过 哪个(正确地)返回 当尝试通过单击按钮时,使用 似乎什么都没有发生,我不知道如何进行故障排除。 如何通过模拟单击(活动事件侦听器)切换到“移动”选项卡? 额外提示:是否可以使用rvest软件包?

  • 问题内容: 我正在尝试在www.meetme.com上发送消息,但不知道该怎么做。我可以在评论区域中键入消息,但是单击“发送”按钮不会执行任何操作。我究竟做错了什么?当我登录并按登录按钮时,页面确实发生了变化,一切都很好。有人有任何想法或线索吗? 问题答案: 如果不了解正在访问的网页,就无法在禁用JavaScript的情况下执行AJAX请求。如果更改未成功,则必须继续进行调试,但请确保已启用Jav

  • 在上图中,我正试图点击“继续发送电子邮件”按钮。这是我的代码: 要么是我的语法错误,要么是我对网页的糟糕理解让我失望了 任何帮助-非常感谢 谢了Rob