我正在使用含有C#的硒和使用phantomJS和镀铬无头金马for进行自动化测试。我最近遇到了一个问题,但却找不到答案。当无头浏览器呈现某些页面时,他们无法在页面上找到元素。我进一步研究了这个问题,发现无头浏览器正在查看的html代码已经被剥夺了所有元素,并在head标签中添加了一些标签。这些页面和测试在Chrome和IE等普通浏览器中运行良好。
这是我正在使用的html代码:
<!--?xml version="1.0" encoding="UTF-8" ?-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head></head>
<body>
<form id="dataform" action="Removed for privacy" method="post" autocomplete="on">
<p>
siteindicator is required.
</p>
<div>
Final URL: "Removed for privacy" <input type="hidden" name="RelayState" value="Removed for privacy" /><br />
siteindicator: <input type="text" name="siteindicator" style="width: 500px;" /><br />
dateofbirth: <input type="text" name="dateofbirth" style="width: 500px;" /><br />
employeenumber: <input type="text" name="employeenumber" style="width: 500px;" /><br />
lastname: <input type="text" name="lastname" style="width: 500px;" /><br />
ssn: <input type="text" name="ssn" style="width: 500px;" /><br />
last4ssn: <input type="text" name="last4ssn" style="width: 500px;" /><br />
unauthorisedurl: <input type="text" name="unauthorisedurl" style="width: 500px;" /><br />
last5ssn: <input type="text" name="last5ssn" style="width: 500px;" /><br />
first5ssn: <input type="text" name="first5ssn" style="width: 500px;" /><br />
redirecturl: <input type="text" name="redirecturl" style="width: 500px;" /><br />
exceptionurl: <input type="text" name="exceptionurl" style="width: 500px;" /><br />
timeouturl: <input type="text" name="timeouturl" style="width: 500px;" /><br />
employerid: <input type="text" name="employerid" style="width: 500px;" /><br />
</div>
<div>
<input type="submit" value="Continue" />
</div>
</form>
</body></html>
当我使用无头浏览器并提取源代码时,我看到了这个:
<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>
希望有人可以提供帮助,因为我对此缺乏想法。
编辑:
以下是我使用selenium初始化浏览器的c#代码:
case "ChromeHeadless":
var headlessOptions = new ChromeOptions();
headlessOptions.AddArguments("--disable-gpu, --headless");
headlessOptions.AddArguments("--window-size=1920,1080");
MyDriver = new ChromeDriver(Path, headlessOptions);
break;
这是测试开始的地方:
Driver.Init("SSO");
wait = new WebDriverWait(Driver.MyDriver, TimeSpan.FromSeconds(30));
ssoTestPage = new SingleSignOn(Driver.MyDriver);
Driver.getPageSourceCode();//used to get the html source code from just before the failure
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("dataform")));
测试在最后一行失败,在dataform元素上有一个ElementNotFound Exception。