Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过硒找到元素_Php_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Php 如何通过硒找到元素

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"] 或 我得

我将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"]

我得到以下错误:

没有此类元素:无法定位元素: {“方法”:“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']
    

显然,由于windows大小不同(我的机器与Selenium使用的虚拟屏幕不同),导航栏没有显示,因此无法找到元素


在做一个变通方法时发现了这一点——使用“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']