Мы, наверное, все видели этот экран при тестировании, все, что вам нужно, это сайт HTTPS с самозаверяющим сертификатом, и вы получаете экран "Есть проблема с сертификатом безопасности этого сайта", который требует, чтобы вы щелкнули ссылкудля продолжения.
С Watir это не проблема, я автоматизирую экран так же, как и любую другую веб-страницу, нажимая ссылку в соответствии с ее текстом или значением идентификатора.
С Watir-Webdriver это так же, какесли ничего внутри HTML не может быть распознано.и я не одинок в этом См. этот вопрос
Это не просто попытка щелкнуть ссылку, почти все, что вы попробуете здесь, потерпит неудачу на этой странице Даже простая функция, такая как puts browser.text
вернет ошибку.
Selenium::WebDriver::Error::NoSuchElementError: Unable to find element with tag name == body
Вы можете просмотреть исходный код, использовать инструменты разработчика или сделать так, чтобы элемент браузера выкладывал HTML-код и прямо видеть проклятый тег body, но Webdriver не видит егопо какой-то причине.
Я не знаю, является ли это ключом или красной сельдью, но я знаю, что веб-драйвер использует тонну XPATH под капотом, и я считаю, что XPATH чувствителен к регистру.и в этом отношении я вижу что-то очень необычное, когда я использую puts browser.html
против этой страницы, в том, что каждое имя тега в верхнем регистре.Несколько необычный, но законный действительный HTML в любом случае.Использование browser.html
на других страницах показывает строчные теги.Может ли это быть причиной того, что у вебдрайвера возникла такая большая проблема с этой страницей?
У кого-нибудь есть какие-нибудь яркие идеи относительно того, как я могу заставить веб-драйвер видеть элемент ссылки, чтобы я мог щелкнуть по нему?
Вывод из объекта браузера, когда я запрашиваю его для страницы HTML
irb(main):019:0> puts $browser.html #note, indentation is added later for clarity
<HTML dir=ltr>
<HEAD>
<TITLE>Certificate Error: Navigation Blocked</TITLE>
<LINK rel=stylesheet type=text/css href="ErrorPageTemplate.css">
<META name=MS.LOCALE content=EN-US>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<META content=Yes http-equiv=MSThemeCompatible>
<SCRIPT language=javascript type=text/javascript src="errorPageStrings.js">
</SCRIPT>
<SCRIPT language=javascript type=text/javascript src="httpErrorPagesScripts.js">
</SCRIPT>
<SCRIPT language=javascript type=text/javascript src="invalidcert.js">
</SCRIPT>
</HEAD>
<BODY onload="BodyLoad(); initMoreInfo('infoBlockID');" class=securityError>
<TABLE border=0 cellSpacing=0 cellPadding=0 width=730>
<!-- Main title -->
<TBODY>
<TR>
<TD id=shieldIconAlign vAlign=top rowSpan=3 width=60 align=left>
<IMG id=shieldIcon alt="Shield icon" src="red_shield_48.png">
</TD>
<TD id=mainTitleAlign vAlign=middle align=left>
<H1 id=mainTitle>There is a problem with this website's security certificate</H1>
</TD>
</TR>
<TR>
<TD>
<H3>
<DIV id=linkdiv name="linkdiv"></DIV>
</H3>
</TD>
</TR>
<TR>
<!-- This row is for the the divider-->
<TD id=errorCodeAlign class=errorCodeAndDivider align=right>
<DIV class=divider></DIV>
</TD>
</TR>
<!-- Error Body -->
<TR>
<TD></TD>
<TD>
<H3>
<DIV style="DISPLAY: block" id=CertUnknownCA name="CertUnknownCA">
The security certificate presented by this website was not issued by a trusted certificate authority.
</DIV>
<DIV style="DISPLAY: none" id=CertExpired name="CertExpired"></DIV>
<DIV style="DISPLAY: none" id=CertCNMismatch name="CertCNMismatch"></DIV>
<DIV style="DISPLAY: none" id=CertRevoked name="CertRevoked"></DIV>
<NOSCRIPT id=securityCert1></NOSCRIPT><BR>
<ID id=securityCert2>
Security certificate problems may indicate an attempt to fool you or intercept any data you send to the server.
</ID>
</H3>
</TD>
</TR>
<!-- Recommendation-->
<TR>
<TD> </TD>
<TD><H2 id=recommendation><B>We recommend that you close this webpage and do not continue to this website. </B></H2></TD>
</TR>
<!-- close webpage-->
<TR>
<TD> </TD>
<TD id=closeWebpageAlign vAlign=middle align=left>
<H4 id=closeWebpage>
<IMG class=actionIcon border=0 alt="Recommended icon" src="green_shield.png">
<A href="javascript:closePage()">Click here to close this webpage.</A>
</H4>
</TD>
</TR>
<!-- continue to site-->
<TR>
<TD> </TD>
<TD id=continueToSiteAlign vAlign=middle align=left>
<H4 id=continueToSite>
<IMG id=ImgOverride class=actionIcon border=0 alt="Not recommended icon" src="red_shield.png">
<A id=overridelink href="http://admanager.qa-prod.local/signups/lead_form" name=overridelink>Continue to this website (not recommended).</A>
</H4>
</TD>
</TR>
<!-- InfoBlock -->
<TR>
<TD id=infoBlockAlign vAlign=top align=right> </TD>
<TD id=moreInformationAlign vAlign=middle align=left>
<H4>
<TABLE>
<TBODY>
<TR>
<TD vAlign=top>
<A onclick="javascript:expandCollapse('infoBlockID', true); return false;" href="#">
<IMG id=infoBlockIDImage class=actionIcon border=0 alt="More information" src="down.png">
</A>
</TD>
<TD vAlign=top>
<SPAN id=moreInfoContainer>
<A href="javascript:expandCollapse('infoBlockID', true);">More information</A>
</SPAN>
<NOSCRIPT></NOSCRIPT>
</TD>
</TR>
</TBODY>
</TABLE>
</H4>
<DIV style="DISPLAY: none" id=infoBlockID class=infoBlock>
<P>
<LI id=errorExpl1>If you arrived at this page by clicking a link, check the website address in the address bar to be sure that it is the address you were expecting.
<LI id=errorExpl2>When going to a website with an address such as https://example.com, try adding the 'www' to the address, https://www.example.com.
<P></P>
<P id=moreInfoSeeHelpPF>For more information, see "Certificate Errors" in Internet Explorer Help.
</P>
</LI>
</DIV>
</TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
=> nil
irb(main):020:0>