c# а точнее .net в поставке имеет контрол WebBrowser, это полноценный браузер (раньше был интернет эксплорер, сейчас хз edge это или уже на webkit, если использовать mono то это будет firefox), с ним невероятно просто работать, хотя на практике вместо того чтобы ковыряться в DOM документа средствами .net лучше это делать внедрив javascript внутрь страницы.
Выглядит работа примерно так, кидаете на форму контрол, на событие onload получаете доступ к документу webControl.document, дальше это уже браузерные dom методы. Совет, вместо добавления script на страницу лучше запускайте ее по таймеру .setInterval с нулевым интервалом, тогда скрипт будет запущен в контексте страницы а не какой то песочницу .net хотя последнее возможно подойдет для многопоточного доступа (осторожно контрол не предполагает многопоточность, но вы можете по ксперементировать, открыв несколько контролов и работая с ними из разных потоков, отпишитесь о результатах)
Этот способ на порядок эффективнее силениум, так как отсутствует посредник, но все же ресурсы будут использоваться как на полноценный браузер (правда чуть меньше чем оригинальный)