【问题标题】:Python Selenium Loop click through linksPython Selenium Loop 点击链接
【发布时间】:2020-11-16 20:56:49
【问题描述】:

我无法循环点击链接。当我尝试循环单击链接时,它只会单击第一个链接。

从 html 代码中,我还需要名为“key”值的元素。如何捕捉它。

在 Dropbox 中复制 html 文件。请点击https://www.dropbox.com/sh/85rx13m8iqwax4b/AACNDq_YyOukLh22JNv76vjua?dl=0

html代码

https://pastebin.com/Cyg98W2C

我尝试过的 Python 代码

elem = WebDriverWait(browser, 200).until(EC.element_to_be_clickable((By.XPATH, "//DIV[@id='propertySummaryList']/DIV[@class='summaryListItem   ']/DIV[1]/DIV[3]/DIV[1]/H2[1]/A[1]")))
     elem.click()
     browser.back()

编辑:添加了保管箱链接。由于该网站仅登录。我已经制作了该页面的副本。

【问题讨论】:

  • 我们无法查看该链接上的内容?
  • 我不明白,点击链接后的链接内容?或链接可用的实际代码。如果它是第二个,那么是的,没有获取 url 的 href。我认为javascript正在处理链接href部分。有一个事件 onclick / onmousedown 事件。
  • 我看不到来自pastebin.com/Cyg98W2C的任何代码
  • 我的错,第一次使用 pastebin。你现在可以检查一下吗?
  • 是的,但如果我有网站链接会更好

标签: python selenium selenium-chromedriver


【解决方案1】:

您可以收集所有元素,然后使用相对查找找到您需要的链接。请注意,如果您不在新窗口中打开点击,这可能会导致元素过时。

summaryList = driver.find_elements_by_xpath("//DIV[@id='propertySummaryList']/DIV[@class='summaryListItem   ']")
for elements in summaryList:
    link = elements.find_elements_by_xpath(".//h2//a")
    link.text // or link.click() but need to open in a new window or will get staleElementReference

【讨论】:

  • 我已经按照你的例子运行了脚本。但是出现了python AttributeError: 'list' object has no attribute 'click'之类的错误
  • 这可能是因为find_elements_by_xpath 生成了一个列表。尝试改用link = elements.find_element_by_xpath(".//h2//a")
  • 我想我是在正确的轨道上。正如你所说,我收到了 staleElement 错误。我正在研究如何在新标签或窗口中打开链接。
  • @PatrickKlein 我添加了带有 html 文件的 Dropbox 链接。请看一看。
  • 你可以试试这个在新窗口中打开链接:stackoverflow.com/a/19152396/1387701
猜你喜欢
  • 1970-01-01
  • 2020-12-28
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多