我正在将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>
我正在尝试选择元素,然后单击它。但是,当我尝试如下使用xpath时:
//a[@showpage="cards"]
或
//*[@showpage="cards"]
我收到以下错误:
没有这样的元素:无法找到元素: {“ method”:“ xpath”,“ selector”:“ / * [@ showpage =” cards“]”}(会话信息: chrome = 70.0.3538.110)(驱动程序信息:chromedriver = 2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),平台= Linux 4.15.0-43-generic x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:24毫秒 有关此错误的文档,请访问: http://seleniumhq.org/exceptions/no_such_element.html构建信息: 版本:“ 3.4.0”,修订:“未知”,时间:“未知”系统信息: 主机:'ubuntu',ip:'127.0.1.1',操作系统名称:'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}, acceptInsecureCerts = false,webStorageEnabled = true,browserName = chrome, TakesScreenshot = true,javascriptEnabled = true,setWindowRect = true, excellentAlertBehaviour =,applicationCacheEnabled = false, rotatable = false,networkConnectionEnabled = false, chrome = {chromedriverVersion = 2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d), userDataDir = / tmp / .org.chromium.Chromium.Teyqo7}, takeHeapSnapshot = true,pageLoadStrategy = normal, databaseEnabled = false,handlesAlerts = true,版本= 70.0.3538.110, browserConnectionEnabled = false,nativeEvents = true, locationContextEnabled = true,cssSelectorsEnabled = true}]会话ID: 367080a50b61c75a8c16a17b954a5972 ***元素信息:{Using = xpath,value = / * [@ showpage =“ cards”]}
任何有关如何使用xpath或如何使用其他选择方法(使我能够单击链接)的帮助,将不胜感激。
答案 0 :(得分:1)
您可能需要等待元素才能单击它:
$driver->wait()->until(
WebDriverExpectedCondition::elementToBeClickable(WebDriverBy::xpath('//a[@showpage="cards"]')))->click();
答案 1 :(得分:1)
要在元素上使用文本作为用户卡的元素调用click()
,因为该元素是启用了JavaScript的元素,则需要诱导 WebDriverWait 元素可点击,您可以使用以下任一解决方案:
使用LINK_TEXT
:
User Cards
使用CSS_SELECTOR
:
a[showpage='cards']>i.zzdi.zzdi-closed-caption.zzdi-hx-fw
使用XPATH
:
//a[@showpage='cards' and normalize-space()='User Cards']
答案 2 :(得分:0)
显然,由于窗口大小的差异(我的机器与Selenium使用的虚拟屏幕)不同,导航栏未显示,因此找不到该元素。
在解决方法时发现了问题-使用“ a”标签获取所有元素,然后进行遍历。只有在单击额外的按钮以显示导航栏之后,才能找到该元素。