【问题标题】:position of element is changing after re-showing selenium element重新显示硒元素后元素的位置发生变化
【发布时间】:2021-06-28 17:10:56
【问题描述】:

我正在为作者和关于锚标签执行相同的操作

查找元素的代码

element = driver.find_element('class_name','author')

隐藏元素的代码

driver.execute_script("arguments[0].style.display = 'None';", element)

显示元素的代码

driver.execute_script("arguments[0].style.display = 'block';", element)

问题 为什么重新显示相同的元素后作者名称和关于元素的位置发生了变化?

网站链接:https://quotes.toscrape.com/

【问题讨论】:

  • 你能分享这个网站的链接吗?
  • @LibinThomas 我已在问题中添加了网站链接

标签: python python-3.x selenium web-scraping webdriver


【解决方案1】:

https://www.w3schools.com/cssref/pr_class_display.asp

block 在下一行显示元素。完全删除该属性或使用内联

driver.execute_script("arguments[0].style.display = undefined;", element)

driver.execute_script("arguments[0].style.display = 'inline';", element)

【讨论】:

  • 它现在与内联工作正常使用内联有什么限制吗?
  • 我不这么认为
【解决方案2】:

作者姓名和文本链接“about”在两个不同的行中指定。我建议您尝试隐藏整个 span

而不是仅仅使用类名隐藏作者的行 相同的 Xpath 将是 xpath = "/html/body/div/div[2]/div[1]/div[1]/span[2]"

如果您想保留文本“by”,请尝试指定单独的变量以查找两行的元素并分别隐藏/取消隐藏它们。这不应该改变 html 元素的结构。


试试这个,让我知道它是否有效。

【讨论】:

  • 之前我的想法是隐藏父元素而不是单个元素,但我正在为 selenium WebDriver 编写实用程序,我被困在这里,所以我只想了解它为什么会发生
  • 添加可见性后,添加大约 2-3 分钟的 time.sleep。手动检查 html 代码并检查与之前相比是否有任何不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2015-07-30
  • 2022-12-13
  • 2013-07-02
  • 1970-01-01
  • 2021-08-23
  • 2021-07-18
相关资源
最近更新 更多