【问题标题】:Python Selenium: StaleElementReferenceException / set aria-pressed = "true"Python Selenium:StaleElementReferenceException / 设置 aria-pressed = "true"
【发布时间】:2019-07-13 23:15:12
【问题描述】:

我正在使用 Python Selenium 尝试从网站获取一些数据,并且需要更改日期。

我尝试了以下方法:获取包含所有日期的表格并遍历所有 td。如果出现正确的日期,请单击。不幸的是,这不起作用。它打印了正确的数字,但它没有点击它应该或任何一个。

day_table = depar_date.find_element_by_xpath("/html/body/div[8]/section/div/div/div[2]/div/table/tbody")
day_table.click()

for row in test.find_elements_by_css_selector('tr'):
    for cell in row.find_elements_by_tag_name('td'):
        print(cell.text)
        if cell.text == "15":
            cell.click()

我收到以下错误消息:

StaleElementReferenceException:过时的元素引用:元素是 未附加到页面文档

我还看到,对于选定的日子 aria-pressed = "true",有没有办法将这个 "true" 设置为正确的日子?

非常感谢您的帮助。

【问题讨论】:

  • 能否分享一下网址。您不需要循环来选择日期,您可以使用简单的 xpath 来完成。

标签: python selenium


【解决方案1】:

我猜你需要对按钮本身执行操作,而不是“tr”元素,因为事件侦听器在按钮上。您能否尝试执行以下操作并让我知道会发生什么:

 depar_date.find_element_by_xpath("//td/button[text()="15"]").click()

【讨论】:

  • 非常感谢。我试过了,不幸的是我得到:NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“//td/button[text()="15"]"}跨度>
  • 非常感谢!这行得通,但是如果我用保存为字符串的变量替换“15”,它就不再存在了.... day = str(14) day_table2 = depar_date.find_element_by_xpath('//td//*[contains(@aria-标签,天)]').click()
  • 您可以为此使用转义字符。请将其标记为已回答。
  • 使用“转义字符”是什么意思?会做!谢谢你的帮助!!
  • 使用 xpath 如下:"//td//*[contains(@aria-label,\"15\")]" 或使用单引号
猜你喜欢
  • 2018-07-08
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多