您好我正在尝试在Connectwise登录页面上选择公司Box以自动登录。
但是我甚至无法选择公司字段。
需要选择的元素:
<input class="loginTextBox loginTextBox-watermark" type="text" autocomplete="off" autocorrect="off" autocapitalize="off"/>
我尝试了什么:
尝试 XPATH :
company_field = driver.find_element_by_xpath("/x:html/x:body/x:div[6]/x:div/x:table/x:tbody/x:tr[1]/x:td/x:table/x:tbody/x:tr[2]/x:td/x:table/x:tbody/x:tr[1]/x:td/x:table/x:tbody/x:tr/x:td[2]/x:table/x:tbody/x:tr[1]/x:td/x:input")
堆栈追踪:
selenium.common.exceptions.InvalidSelectorException:消息:无效的选择器:无法找到具有xpath表达式的元素/ x:html / x:body / x:div [6] / x:div / x:table / x :TBODY / X:TR 1 / X:TD / X:表/ X:TBODY / X:TR [2] / X:TD / X:表/ X:TBODY / X:TR {{3} } / x:td / x:table / x:tbody / x:tr / x:td [2] / x:table / x:tbody / x:tr 1 / x:td / x:输入因为以下错误:
尝试类选择:
company_field = driver.find_element_by_class_name("loginTextBox loginTextBox-watermark")
堆栈追踪:
selenium.common.exceptions.InvalidSelectorException:消息:无效的选择器:不允许使用复合类名称
尝试 CSS :
driver.find_element_by_css_selector(".loginTextBox loginTextBox-watermark[type='text']").click()
堆栈追踪:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“method”:“css selector”,“selector”:“。loginTextBox loginTextBox-watermark [type ='text']” }
HTML页面来源:
<document>
<html>
<head>
<body style="background-color: #F2F2F2; margin: 0px; padding: 0px;" ondragover="window.event.returnValue=false;">
<iframe id="__gwt_historyFrame" style="position:absolute;width:0;height:0;border:0" tabindex="-1" src="javascript:''"/>
<script src="common/scripts/cw.js?v=201561" type="text/javascript"/>
<script src="common/scripts/cw.io.js?v=201561" type="text/javascript"/>
<script language="javascript" type="text/javascript"> function checkSsl() { if (document.location.protocol != "https:" && document.location.host.indexOf("localhost") == -1 && document.location.href.indexOf("dotnet") == -1) { cw.io.jsonCall("login/IsSslRequired.rails", { 'onsuccess': function (data) { if (data.Data == true) { var url = "https://" + document.location.host + document.location.pathname + document.location.search + document.location.hash; document.location.href = url; } } }); } } cw.ui.createInitialLoadingNode(); checkSsl(); document.writeln("<script type='text/javascript' language='javascript' src='com.connectwise.psa/com.connectwise.psa.nocache.js'></scr" + "ipt>"); function dragover(e) { return false; } </script>
<div id="cw-loading" class="cw-loading">
<script src="com.connectwise.psa/com.connectwise.psa.nocache.js" language="javascript" type="text/javascript"/>
<iframe id="com.connectwise.psa" src="javascript:""" style="position: absolute; width: 0px; height: 0px; border: medium none; left: -1000px; top: -1000px;" tabindex="-1"/>
<div style="display: none;" aria-hidden="true"/>
<div style="position: absolute; z-index: -32767; top: -20cm; width: 10cm; height: 10cm; visibility: hidden;" aria-hidden="true"/>
<div style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;">
<div class="GHN3134DCB" style="position: absolute; left: 0px; top: 0px; display: block; width: 1366px; height: 659px;"/>
<div class="GHN3134DJB" style="left: 435px; top: 163px; border-width: 0px; z-index: 555555555; position: absolute; overflow: visible; background-color: transparent;">
<div class="popupContent">
<table cellspacing="0" cellpadding="0" style="">
<tbody>
<tr>
<td align="left" style="vertical-align: top;">
<table class="GHN3134DK5I" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<tr>
<td align="left" style="vertical-align: top;">
<table class="GHN3134DJ5I" cellspacing="0" cellpadding="0" style="display: block;">
<tbody>
<tr>
<td align="left" style="vertical-align: top;">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="left" style="vertical-align: top;">
<td align="left" style="vertical-align: top;">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="left" style="vertical-align: top;">
<input class="loginTextBox loginTextBox-watermark loginTextBox-hightlight" type="text" autocomplete="off" autocorrect="off" autocapitalize="off"/>
</td>
</tr>
<tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<tr>
<tr>
<tr>
<tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
</document>
会不会有任何帮助?
感谢您的时间。
答案 0 :(得分:1)
selenium.common.exceptions.InvalidSelectorException:消息:无效的选择器:无法找到具有xpath表达式的元素/ x:html / x:body / x:div [6] / x:div / x:table / x :TBODY / X:TR1 / X:TD / X:表/ X:TBODY / X:TR [2] / X:TD / X:表/ X:TBODY / X:TR1 / X:TD / X:表/ X:TBODY / X:TR / X:TD [2] / X:表/ X:TBODY / X:TR1 / X:TD / X:输入
发生此错误是因为xpath
在语法上不正确。
selenium.common.exceptions.InvalidSelectorException:消息:无效的选择器:不允许使用复合类名称
发生此错误是因为selenium不支持复合类来定位元素。
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“method”:“css selector”,“selector”:“。loginTextBox loginTextBox-watermark [type ='text']” }
发生此错误是因为您找到了错误的元素。根据定位器,它将尝试找到属性<loginTextBox-watermark>
具有值type
的{{1}}元素,并且应该是具有类属性值text
的元素的后代,这是不正确的。
所以基本上你提供的所有定位器在语法或逻辑上都是错误的,你应该尝试使用正确的loginTextBox
定位器,如下所示: -
css_selector
如果driver.find_element_by_css_selector("input.loginTextBox.loginTextBox-watermark.loginTextBox-hightlight[type='text']")
班级名称<table>
是唯一且已修复的,您也可以尝试: -
GHN3134DJ5I
Css选择器参考:到learn more about css_selector
follow this reference
Xpath引用 ::: learn more about xpath
follow this reference