【问题标题】:Click on Pop up点击弹出
【发布时间】:2022-01-08 13:25:25
【问题描述】:

有谁知道我如何使用 selenium 克服这个弹出窗口?当我定期登录 Facebook 时,它不会出现,但由于某种我不知道的原因,当我运行我的脚本时它一直在启动。

cookie_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[id='u_0_j_I5']"))).click()

这是我试图用来摆脱它的脚本,但它不起作用

【问题讨论】:

  • 你想点击哪个按钮?是Allow Selected Cookies 吗?如果可以,能否分享相关的 HTML 代码?
  • 是的,
  • 谢谢,请看下文。

标签: python selenium selenium-chromedriver


【解决方案1】:

您正在使用的 css 选择器:

button[id='u_0_j_I5']

在本质上看起来充满活力和脆弱。这意味着,每次刷新页面时,您都会看到后端生成不同的 id。

我建议你使用应该可靠且不易损坏的定位器。

CSS:

input[data-cookiebanner='accept_button']

XPath

//input[@data-cookiebanner='accept_button']

但您应该注意定位器的唯一性。

如果我们在HTML DOM 中有唯一条目,请检查dev tools(谷歌浏览器)。

检查步骤:

Press F12 in Chrome -> 转到element 部分 -> 做一个CTRL + F -> 然后粘贴xpath/css 看看,如果你想要的element 用@ 得到高亮 987654331@匹配节点。

如果它们是唯一的,那么您可以使用以下代码:

cookie_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[data-cookiebanner='accept_button']")))
cookie_button.click()

更新:

使用下面的 XPath:

//button[contains(text(),'Allow All Cookies')]

然后像这样点击它:

cookie_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[contains(text(),'Allow All Cookies')]")))
cookie_button.click()

【讨论】:

  • 我已经放入 css/xpath 并且没有突出显示任何内容
  • 如果是这种情况,请检查它是否在您需要切换到的 iframe 下。
  • @David:请参阅上面更新的部分。希望对您有所帮助。
猜你喜欢
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2018-11-25
相关资源
最近更新 更多