我使用the Microsoft WebDriver server自动化Microsoft Edge。
我能够在我尝试的前2-3次启动浏览器,但随后的尝试似乎导致WebDriver服务器挂起。当我发送新会话命令时:
此时Edge非常适用。我可以手动将其导航到页面,但它看起来完全正常。
另一方面,当新会话请求挂起时,WebDriver服务器不会响应其他请求。例如,curl http://192.168.20.248:4444/status
将挂起,服务器也不会记录任何传入的请求。 (我想这可能是预期的行为,但是?)
如果我手动关闭Edge,然后,WebDriver服务器会发送回复:{"sessionId":null,"status":13,"value":{"message":"unknown error"}}
任何想法可能会出错?我可以收集哪些日志或其他诊断信息来帮助调试吗?
我正在运行Edge build 10240(和Windows 10 build 10240,即公共版本)。我已经在虚拟机和物理机上再现了这一点。
在Windows 10计算机上,我在具有管理权限的命令提示符下运行WebDriver服务器:
"C:\Program Files (x86)\Microsoft Web Driver\MicrosoftWebDriver.exe" --port=4444 --host=192.168.20.248
在一台单独的Linux机器上,我正在运行此客户端代码。它会在到达.get
来电之前挂起。
import logging
import time
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
try:
driver = webdriver.Remote(
command_executor='http://192.168.20.248:4444',
desired_capabilities=DesiredCapabilities.CHROME)
driver.get('http://www.example.com')
driver.get('http://www.google.com')
driver.quit()
except WebDriverException as e:
logging.warning('caught error: %s' % e)
我还可以使用原始线协议重现行为,无论价值多少。 /session
的卷曲永远不会结束。
#!/bin/bash
wd_remote="http://192.168.20.248:4444"
echo "STATUS: $(curl -s ${wd_remote}/status)"
resp=$(curl -sd '{"desiredCapabilities": {"browserName":"MicrosoftEdge"}}' "${wd_remote}/session")
session_id=$(echo "${resp}" | sed -rn 's/.*"sessionId":"([^"]+).*/\1/ p')
if [[ -z "${session_id}" ]]; then
echo "error starting session: ${resp}"
exit 1
fi
echo "started session ${session_id}"
curl -s -d '{"url": "http://www.google.com"}' "${wd_remote}/session/${session_id}/url"
curl -s -XDELETE "${wd_remote}/session/${session_id}"
echo "quit session ${session_id}"
我可以在几分钟后看到来自EdgeWebDriver的响应,表示超时:
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "HTTP/1.1 200 OK[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "Content-Type: application/json;charset=UTF-8[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "Server: Microsoft-HTTPAPI/2.0[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "Access-Control-Allow-Origin: *[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "Date: Wed, 20 Jan 2016 10:38:19 GMT[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "Content-Length: 60[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:72 - http-outgoing-3 << "[\r][\n]"
2016-01-20 11:38:19 DEBUG org.apache.http.wire:86 - http-outgoing-3 << "{"sessionId":null,"status":21,"value":{"message":"Timeout"}}"
答案 0 :(得分:0)
我目前也需要使用自动边缘浏览器。 据我所知,到目前为止,在与#34; localhost&#34;不同的IP上启动WebDriver。需要一个提升的命令行。否则我得到一个错误:&#34; HttpAddUrlToUrlGroup失败了183&#34;。
但据我所知here,现在不支持在高架cmd中运行,导致问题的原因是Edge浏览器目前只能从运行浏览器本身的机器自动运行。 / p>