我想在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)
所以我没有更多的想法,可怜的我,我正在寻找一个更有经验的人的建议。
1条答案
按热度按时间erhoui1w1#
这是从另一个线程复制的。我想可以通过这个来完成