【问题标题】:Click on second button (identical buttons) Selenium python单击第二个按钮(相同的按钮) Selenium python
【发布时间】:2016-11-01 03:39:02
【问题描述】:

我有 2 个具有相同值和类的按钮,它们是相同的。

<input class="button" value="Ir" type="submit">

我想点击第二个,它在&lt;div class="smallfont"&gt;

如何使用 python Selenium 做到这一点?谢谢;D

INPUT CODE

【问题讨论】:

标签: python selenium button


【解决方案1】:

您可以获取对这两个元素的引用,然后单击第二个。

buttons = driver.find_elements_by_css_selector("input.button");
buttons[2].click()

【讨论】:

  • 已修复。 :) 您可能只能使用 find 指定一个元素,但如果没有更多 HTML,我无法使 CSS 选择器变得那么具体。这至少是一个简单的替代方案。
【解决方案2】:

如果我认为“smallfont”类的 div 中只有一个提交按钮是正确的(重复按钮位于没有该类的不同 div 中),那么您可以简单地使用类似于以下的路径:

//div[@class='smallfont']/input

【讨论】:

  • 哦,但我仍然收到一个巨大的错误:('ElementNotVisibleException:消息:元素当前不可见,因此可能无法与 Stacktrace 交互:'
  • 嗯,这很好,这意味着我们找到了它!当您观看测试运行时,该按钮是否真的可见?如果没有,那么您需要在应用程序中添加必要的步骤,以便它可见。如果您确实看到了它,那么您可能需要使用 WebDriverWait 来等待它变得可见,然后再单击它。
【解决方案3】:

这是文档中的示例:

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
   <input name="continue" type="button" value="Clear" />
  </form>
</body>
<html>

login_form = driver.find_element_by_xpath("/html/body/form[1]")
login_form = driver.find_element_by_xpath("//form[1]")
login_form = driver.find_element_by_xpath("//form[@id='loginForm']")

input[1] 是一个数组,从 1 开始,所以在你的情况下,它应该看起来像这样(更正,以下评论):

button = driver.find_element_by_xpath("//form[@class='smallfont']/input[@value='Ir'][@type='submit'][2]")
button.click()

发件人:

http://selenium-python.readthedocs.io/locating-elements.html

【讨论】:

  • 我遇到了一个巨大的错误,现在我在帖子中附加了一张图片:/让我们看看它是否有帮助
  • 我只想点击第二个“Ir”按钮link
  • Nope :( 我收到此错误“NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//form[@class='smallfont'] /input[@value='Ir'][@type='submit'][2]"}"
  • 正如另一个答案所说(@Breaks Software),您不需要第二个输入。最后删除 [2]。
【解决方案4】:

尝试通过以下方式解决。

String cssSelectorOfSameElements="input[type='submit'][id='button']";
  List<WebElement>a=driver.findElements(By.cssSelector(cssSelectorOfSameElements);
      a.get(0).click();
      a.get(1).click();
      a.get(2).click();

现在取决于您的要求,您可以单击特定选项卡。希望这有效。

【讨论】:

  • 不,这是java。根据python转换这段代码。
  • 我不知道python,但这是你可以解决问题的方法,我给你一个想法。
猜你喜欢
  • 2023-03-22
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
  • 2020-07-28
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多