【问题标题】:Trouble clicking button using Selenium with Python使用 Selenium 和 Python 无法单击按钮
【发布时间】:2018-06-18 22:06:07
【问题描述】:

我正在尝试在 nike.com 上使用 Selenium 制作基本的表单填充器。我已经完成了大部分工作,但我无法单击按钮选择性别。我尝试使用许多find_element_by_xxxxx 代码位的示例,但都没有奏效。通过 id 和 xpath 查找元素也没有多大用处。我得到的一个典型错误是Message: no such element: Unable to locate element。我对编码很陌生,所以我很容易出错,但是任何关于你们如何解决它的想法将不胜感激

【问题讨论】:

  • 您是否在使用等待 (selenium-python.readthedocs.io/waits.html)?许多网页的内容仅在加载过程的后期显示,您可以使用等待来避免在加载之前尝试查找元素。
  • 您能给我们展示一些您尝试过的选择器示例吗?
  • 评论太长所以这里是一个hastebin:hastebin.com/xibifijoci.nginx
  • 刚刚尝试了malebutton = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, 'd2a4a28a-cdb5-47ed-8723-df28df2c0f06'))),但不幸的是没有运气

标签: python selenium selenium-chromedriver


【解决方案1】:

XPATH 很长,您可以简化。 从外观上看,我猜每次有新会话时这些 ID 都会发生变化。

更直接的 XPATH 选择器可能是...

 "//span[text() = 'Male']"
  • // 指定搜索整个文档
  • span 指定要搜索的元素类型
  • text() 指定需要在元素内的文本

(这将为您提供 span 元素,但它应该仍然有效)

"//span[text() = 'Male']/parent::li//input"

(这将为您提供实际的输入按钮)

另外,就像Ollin Boer Bohan 建议的那样,在对元素执行操作之前考虑使用等待。

【讨论】:

  • 哇,这太完美了,非常感谢。你能解释一下你发送的第一行代码是如何工作的吗?就像代码的每个部分都在做什么来定位元素一样。我非常热衷于学习这一点并将其应用到其他地方。再次感谢
  • @BenS。我已经更新了答案。您还可以在 xpath w/ selenium 上找到一些很棒的教程(例如guru99.com/xpath-selenium.html
  • 我一定会看看那个教程。再次感谢
【解决方案2】:

@cavan 答案是正确的,你也可以像这样使用 xpaht

//input[@type='button']//following::span[text()='Male']

这里我们可以使用跟随来定位男性,你可以对女性按钮做同样的事情

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多