【问题标题】:Clicking multiple buttons on same page with Selenium Python使用 Selenium Python 在同一页面上单击多个按钮
【发布时间】:2020-02-11 06:20:46
【问题描述】:

我对 Python 和 Selenium 非常陌生。我正在使用chromedriver。 我需要帮助。我有一个网页很遗憾我无法显示它,因为它被阻止从所有人打开,但在本地工作。基本上它是一个网页,其中有大约 15 个按钮(同一类),单击时按钮消失。我想制作一个代码,将一个一个地单击每个按钮,直到它们都被单击(消失)。然后刷新页面并对接下来的 100 个页面执行相同操作。

【问题讨论】:

  • 不,你不能,当点击 1 个浏览器并且 Dom 会改变时,必须点击,返回重新获取按钮并继续点击

标签: python selenium automation automated-tests selenium-chromedriver


【解决方案1】:

我没有您的页面来测试此代码,所以希望它能正常工作..

您可以在列表中获取页面中的所有按钮,然后循环单击所有列表项.. 它应该看起来像这样:

# this will return a list with all buttons
buttons = driver.find_elements_by_xpath("//*[@class='btn default check check green markAsChecked']")

# clicking loop
for button in buttons:
button.click()

您可能需要在点击之间添加一个小的延迟,因为它有时会在 selenium 中出现错误。请先立即尝试。如果它不起作用,请在循环中添加 sleep(0.5) 或使用 javascript 进行点击

【讨论】:

  • 如果按钮点击后页面刷新,那么你的所有元素就是你的数组都会过时。
  • 他在cmets中说页面没有刷新,按钮点击不影响页面
  • 这是来自 OP 的假设。我不会依赖那个。到目前为止,我还没有看到他的任何代码或页面源代码。按钮消失。是被css隐藏,被js移除,还是页面刷新?我们不知道。
  • 是的,你是对的 .. 这就是为什么我们至少需要页面源
【解决方案2】:

我发现对我有用的是这个,我在这里找到了类似的问题,答案之一就是这个。不确定这实际上是如何工作的,以及为什么我必须为按钮使用特定的数字,因为如果我使用按钮 [4].click() 它将不起作用。

buttons = driver.find_elements_by_xpath("//*[@class='btn default check check green markAsChecked']")
buttons[2].click()

buttons = driver.find_elements_by_xpath("//*[@class='btn default check check green markAsChecked']")
buttons[3].click()

buttons = driver.find_elements_by_xpath("//*[@class='btn default check check green markAsChecked']")
buttons[5].click()

buttons = driver.find_elements_by_xpath("//*[@class='btn default check check green markAsChecked']")
buttons[7].click()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多