Php 如何通过硒找到元素
我将Selenium与PHP WebDriver一起使用。我试图单击导航栏中的链接,该链接显示在HTML中,如下所示:Php 如何通过硒找到元素,php,selenium,xpath,css-selectors,webdriverwait,Php,Selenium,Xpath,Css Selectors,Webdriverwait,我将Selenium与PHP WebDriver一起使用。我试图单击导航栏中的链接,该链接显示在HTML中,如下所示: <li class=""><a href="javascript:;" showpage="cards"><i class="zzdi zzdi-closed-caption zzdi-hx-fw"></i> User Cards</a></li> //a[@showpage="cards"] 或 我得
<li class=""><a href="javascript:;" showpage="cards"><i class="zzdi zzdi-closed-caption zzdi-hx-fw"></i> User Cards</a></li>
//a[@showpage="cards"]
或
我得到以下错误:
没有此类元素:无法定位元素:
{“方法”:“xpath”,“选择器”:“/*[@showpage=“cards”]”}(会话信息:
chrome=70.0.3538.110)(驾驶员信息:chromedriver=2.43.600233
(523efee95e3d68b8719b3a1c83051aa63aa6b10d),平台=Linux
4.15.0-43-generic x86_64)(警告:服务器未提供任何stacktrace信息)命令持续时间或超时:24毫秒
有关此错误的文档,请访问:
构建信息:
版本:“3.4.0”,版本:“未知”,时间:“未知”系统信息:
主机:'ubuntu',ip:'127.0.1.1',os.name:'Linux',os.arch:'amd64',
os.version:'4.15.0-43-generic',java.version:'1.8.0_191'驱动程序
信息:org.openqa.selenium.chrome.ChromeDriver功能
[{mobileEmulationEnabled=false,hasTouchScreen=false,platform=LINUX,
acceptSslCerts=false,
goog:chromeOptions={debuggerAddress=localhost:43431},
AcceptInsureCerts=false,WebStorage Enabled=true,browserName=chrome,
takesScreenshot=true,javascriptEnabled=true,setWindowRect=true,
unexpectedAlertBehaviour=,applicationCacheEnabled=false,
可旋转=false,networkConnectionEnabled=false,
chrome={chromedriverVersion=2.43.600233
(523efee95e3d68b8719b3a1c83051aa63aa6b10d),
userDataDir=/tmp/.org.chromium.chromium.Teyqo7},
takesHeapSnapshot=true,pageLoadStrategy=normal,
databaseEnabled=false,handlesAlerts=true,version=70.0.3538.110,
browserConnectionEnabled=false,nativeEvents=true,
locationContextEnabled=true,CSSSelectorEnabled=true}]会话ID:
367080a50b61c75a8c16a17b954a5972
***元素信息:{Using=xpath,value=/*[@showpage=“cards”]}
如果您能提供有关如何使用xpath或如何使用任何其他选择方法以使我能够单击链接的帮助,我们将不胜感激。您可能需要等待element能够单击它:
$driver->wait()->until(
WebDriverExpectedCondition::elementToBeClickable(WebDriverBy::xpath('//a[@showpage="cards"]')))->click();
要在文本为用户卡的元素上调用click()
,由于该元素是启用的元素,您需要诱导WebDriverWait使该元素可单击,并且可以使用以下任一解决方案:
- 使用
:链接文本
User Cards
- 使用
:CSS\u选择器
a[showpage='cards']>i.zzdi.zzdi-closed-caption.zzdi-hx-fw
- 使用
:XPATH
//a[@showpage='cards' and normalize-space()='User Cards']
在做一个变通方法时发现了这一点——使用“a”标记获取所有元素,然后遍历它们。只有在单击额外按钮以显示导航栏后,才能找到该元素。此错误在尝试执行驱动程序->findElement时作为异常发生。脚本甚至还没有到达wait()部分…谢谢,但我担心这不起作用。在命令之后,我在/var/www/html/wioc/sdk/ext/vendor/Facebook/WebDriver/lib/WebDriverWait.PHP:84中获得“PHP致命错误:未捕获Facebook\WebDriver\Exception\TimeOutException”。当我执行getPageSource时,我可以清楚地看到该链接出现在HTML中。@Idan,您可以检查链接是否位于
中,页面上没有iFrame,并且当我手动访问该站点时,该链接是可见的。谢谢
//a[@showpage='cards' and normalize-space()='User Cards']