【问题标题】:Selenium - unable to submit commentSelenium - 无法提交评论
【发布时间】:2021-05-24 14:14:48
【问题描述】:

我正在尝试编写一个脚本,允许我以编程方式将 cmets 提交到新闻网站。 我正在使用 Selenium,这是我的脚本(带有我正在尝试使用的确切链接):

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

url = "https://www.delfi.lt/en/lifestyle/earth-day-events-for-the-spring-equinox.d?id=87005127"
driver.get(url)

# Clicking 'I agree' on a cookies banner:
cookies_ok = '//*[@id="c-right"]/a'
driver.find_element_by_xpath(cookies_ok).click()

# XPath list
anon = '//*[@id="comments-listing"]/div[2]/div/div[2]/div/ul/li[1]/span'
name = '//*[@id="inputDiv"]/div/form/input'
comment = '//*[@id="inputDiv"]/div/form/div[3]/div/textarea'
button = '//*[@id="inputDiv"]/div/form/div[4]/div[2]/button[1]'

# Click 'Anonymous' -> fill name and comment fields -> press PUBLISH
driver.find_element_by_xpath(anon).click()
driver.find_element_by_xpath(name).send_keys('name')
driver.find_element_by_xpath(comment).send_keys('comment')
driver.find_element_by_xpath(button).click()

一切正常,但是当我执行最后一个命令时,我在网站上收到以下消息:

“Cookie 被您的浏览器阻止或不支持”。但是,当我自己在浏览器中执行相同的步骤时,cookie 没有问题。

关于如何防止此错误的任何想法?

谢谢

【问题讨论】:

标签: python forms selenium web-scraping cookies


【解决方案1】:

试试这个

driver = webdriver.Chrome(executable_path=webdriver_manager.chrome.ChromeDriverManager().install())

这将安装最新的 chrome 浏览器并运行您的测试。

您可能需要使用pip install webdriver-manager 安装webdriver-manager

【讨论】:

  • 这不是版本问题
  • 好吧,我可以在本地运行上面的脚本。
  • 是版本问题吗?
  • 看着我,截图清楚地写着the browser doesn't support cookies
  • 如果我在以前版本的 chrome 中运行相同的代码,它不会工作吗? Selenium 不能那样工作
【解决方案2】:

您可以优化代码,我假设您必须使用最新的二进制文件:

driver = webdriver.Chrome("C:\\Users\\***\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.delfi.lt/en/lifestyle/earth-day-events-for-the-spring-equinox.d?id=87005127")
wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='c-right']/a"))).click()
ActionChains(driver).move_to_element(wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.as-link:first-child")))).click().perform()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.input-name"))).send_keys("denisafonin")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "textarea.input-message"))).send_keys("Your comment")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.input-login"))).click()

【讨论】:

  • 感谢您的帮助,但我遇到了同样的问题。最新的二进制文件是什么意思?
  • @denisafonin :您需要为 Selenium webdriver、google chrome 和 chromedriver 提供内联二进制文件。如果您不知道所有这些的兼容版本,我建议您从他们的官方网站获取最新版本
  • @denisafonin : 你正在开发哪个操作系统?
  • Windows 10。我刚刚安装了 selenium,所以该部分应该是最新的。我使用了另一条评论中的 webdriver_manager.chrome.ChromeDriverManager().install() 建议来更新 chrome 驱动程序。 Chrome 也是最新的。
  • @denisafonin :那我一无所知,你介意在 firefox 上运行你的脚本吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2013-07-10
相关资源
最近更新 更多