Я новичок в Selenium WebDriver, и у меня проблема с всплывающим уведомлением на странице Facebook, когда я пытаюсь войти в систему. Я много искал, но не нашел ничего полезного. Я нашел код на java, конвертировал в C#, но он не работал (надеюсь, что a сделал это правильно) Я пробовал что-то вроде этого, но ничего. Пожалуйста, помогите с этим, если можете.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, object> hash = new Dictionary<string, object>();
hash.Add("profile.default_content_setting_values.notifications", 2);
ChromeOptions op = new ChromeOptions();
op.AddAdditionalCapability("hash",hash);
IWebDriver driver = new ChromeDriver("path to googlewebdriver");
driver.Url = "http://facebook.com";
driver.Manage().Window.Maximize();
driver.FindElement(By.Id("email")).SendKeys("my email");
driver.FindElement(By.Id("pass")).SendKeys("mypassw" + Keys.Enter);
driver.FindElement(By.XPath("//*[@id='content_container']")).Click();
}
}
}
Удаление Facebook противоречит ToS 3.2, и вы можете быть допрошены и даже можете попасть в Facebook тюрьма. Вместо этого используйте Facebook Graph API.
Я хочу, чтобы моя программа могла легко обрабатывать уведомления на уровне браузера, принимать или отклонять, а затем нажимать что-нибудь еще.





Если вы просто хотите отключить уведомление "все" в браузере Chrome, вы можете использовать переключатель --disable-notifications
Код на C# для запуска Chrome с помощью этого переключателя:
ChromeOptions options = new ChromeOptions();
options.AddArguments("--disable-extensions"); // to disable extension
options.AddArguments("--disable-notifications"); // to disable notification
options.AddArguments("--disable-application-cache"); // to disable cache
driver = new ChromeDriver(options);
Вот список переключателей, доступных для браузера Chrome: Коммутаторы Chromium Comamnd Line
В качестве альтернативы у вас есть варианты обработки предупреждений с помощью этого оператора кода:
options.UnhandledPromptBehavior = UnhandledPromptBehavior.Dismiss;
У вас есть другие варианты, доступные здесь: принять, отклонить, игнорировать и т. д.
Чтобы отключить надоедливое сообщение «some-annoying-website хочет: ? Показывать уведомления», настройте свой ChromeOptions следующим образом:
ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("profile.default_content_setting_values.notifications", 2);
И передайте на свой ChromeDriver:
using (var chrome = new ChromeDriver(options)) ...
ChromeOptions op = new ChromeOptions();
op.AddArguments("--disable-notifications");
Самое главное нужно проверить версии драйвера Chrome. Некоторые версии могут не поддерживаться.
Использование любой такой автоматизации для взаимодействия с веб-интерфейсом изначально противоречит условиям Facebook… Чего вы на самом деле пытаетесь достичь в итоге?