how to properly call the edge browser with selenium?

淺唱寂寞╮ 提交于 2020-08-10 23:19:55

问题


The target of this project is to automate checking sites with Microsoft edge browser using selenium-python i downloaded the webdriver for the edge legacy from this link and i went for the latest release 17134 extracted it with out any problems now lets say i want to visit facebook in an automated way with firefox using the geckodriver

firefox code sample with selenium

from  selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options

# setting up headless option for faster execution
options = Options()
options.headless = True


browser = (webdriver.Firefox(options=options))
browser.get('https://www.facebook.com/')

but when I try to use Microsoft edge that is built in windows 10 I get an attribute error

from  selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.options import Options



options = Options()
options.headless = True

#browser = webdriver.edge(options=options)
browser = webdriver.edge()

ps : when I uncomment this part (browser = webdriver.edge(options=options)) I get module not found error

what is the right way to call Microsoft edge browser , or what I am doing wrong


回答1:


I try to refer to the official documentation for WebDriver for Microsoft Edge (EdgeHTML). But I did not get any information about the Headless mode in it.

WebDriver (EdgeHTML)

I also try to refer to some old threads to find any information on this topic. It looks like we cannot use the Headless mode with the MS Edge legacy browser.

Headless Edge driven through Selenium by C#

I found one article that also said that 'User cannot use IE10, IE11, Edge, Opera & Safari for headless testing.'

Headless Browsers Testing using Selenium Webdriver

From the above references, it looks like you cannot use Headless mode with the MS Edge legacy browser.

As a workaround, I suggest you try to make a test with the MS Edge Chromium browser. I found that it supports Headless mode.

Using Chromium-Specific Options




回答2:


when I use Edge and try to make Edge headless. I also find it hard to do that with slight changes as Chrome. And I refer to the official documentation and get a official solution. Besides selenium, you need to install msedge-selenium-tools, just pip install itpip install msedge-selenium-tools. And use Edge Class in msedge tools. Just like:

from msedge.selenium_tools import Edge
driver = Edge(executable_path='where')

And if we want to make Edge headless, we need to use EdgeOptions Class which selenium.webdriver doesn't offer. selenium.webdriver only provides us with ChromeOptions, FirefoxOptions and Ie's. EdgeOptions is in a separated package msedge.selenium_tools.Then we add argument as what we do on Firefox or Chrome. Before that, we need to set the attribute use_chromium as True. The whole codes:

from msedge.selenium_tools import EdgeOptions
from msedge.selenium_tools import Edge

# make Edge headless
edge_options = EdgeOptions()
edge_options.use_chromium = True  # if we miss this line, we can't make Edge headless
# A little different from Chrome cause we don't need two lines before 'headless' and 'disable-gpu'
edge_options.add_argument('headless')
edge_options.add_argument('disable-gpu')

driver = Edge(executable_path='where', options=edge_options)

Hope it helps. Sorry for my awkward explaination.



来源:https://stackoverflow.com/questions/61462396/how-to-properly-call-the-edge-browser-with-selenium

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!