如何在python selenium webdriver chrome中添加多个实验选项?

5rgfhyps  于 2022-12-30  发布在  Go
关注(0)|答案(1)|浏览(245)

我想在selenium webdriver chrome选项中添加两个experimental_option。这是为了在一个已经打开的浏览器窗口中运行一个测试,并激活一个移动的模拟。我可以分别执行这两个选项,但我无法让它们同时工作。现在我问自己,这是否可能,也许不可能,但更有可能的是我不知道该怎么做。提前感谢那些想给予我一些建议的人。
这将控制已打开的浏览器窗口

opt = Options()
opt.add_experimental_option("debuggerAddress", "localhost:8989")
driver = webdriver.Chrome(executable_path = my_path, options = opt)
driver.get(URL)

这模拟了一个移动的,但是在一个新窗口中

opt = Options()
opt.add_experimental_option("mobileEmulation", { "deviceName": "Pixel 2" })
driver = webdriver.Chrome(executable_path = mt_path, options = opt)
driver.get(URL)

为了让他们一起工作,我做了很多尝试。这里有一些。
添加两次选项会导致异常,不管我先添加哪一个:

opt.add_experimental_option("mobileEmulation", { "deviceName": "Pixel 2" })
opt.add_experimental_option("debuggerAddress", "localhost:8989")
#selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: goog:chromeOptions
#from invalid argument: unrecognized chrome option: mobileEmulation

将两者都作为参数添加会导致TypeError。

opt.add_experimental_option("mobileEmulation", { "deviceName": "Pixel 2"}, "debuggerAddress", "localhost:8989")
#'TypeError: add_experimental_option() takes 3 positional arguments but 5 were given'

或者我尝试了另一种方法,但它只打开已经打开的窗口中的URL,没有移动的模拟。

opt = Options()
opt.add_experimental_option("debuggerAddress", "localhost:8989")
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", { "deviceName": "Pixel 2" })
desired_capabilities = chrome_options.to_capabilities()
driver = webdriver.Chrome(executable_path = my_path, desired_capabilities = chrome_options.to_capabilities(), options = opt)
driver.get(URL)

所以我没有更多的想法,可怜的我,我正在寻找一个更有经验的人的建议。

erhoui1w

erhoui1w1#

这是从另一个线程复制的。我想可以通过这个来完成

chromeOptions = webdriver.ChromeOptions() 
chromeOptions.add_experimental_option("prefs", 
{"profile.managed_default_content_settings.images": 2}) 
chromeOptions.add_argument("--no-sandbox") 
chromeOptions.add_argument("--disable-setuid-sandbox") 

chromeOptions.add_argument("--remote-debugging-port=9222")  # this

chromeOptions.add_argument("--disable-dev-shm-using") 
chromeOptions.add_argument("--disable-extensions") 
chromeOptions.add_argument("--disable-gpu") 
chromeOptions.add_argument("start-maximized") 
chromeOptions.add_argument("disable-infobars")
chromeOptions.add_argument(r"user-data-dir=.\cookies\\test") 

b = webdriver.Chrome(chrome_options=chromeOptions)`

相关问题