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
Xpath Selenium元素定位器-嵌套的div类_Xpath_Selenium_Element - Fatal编程技术网

Xpath Selenium元素定位器-嵌套的div类

Xpath Selenium元素定位器-嵌套的div类,xpath,selenium,element,Xpath,Selenium,Element,谁能帮助我如何匹配这个元素,我想从国家列表中单击加拿大。Selenium(IDE/WebDriver)未找到元素。 我在Webdriver中尝试过: driver.FindElement(By.XPath(".//*[@class='slick-viewport']/*[@class='grid-canvas']/*[@class='ui-widget-content slick-row odd']/*[@class='slick-cell l1 r1 active selected']")).

谁能帮助我如何匹配这个元素,我想从国家列表中单击加拿大。Selenium(IDE/WebDriver)未找到元素。 我在Webdriver中尝试过:

driver.FindElement(By.XPath(".//*[@class='slick-viewport']/*[@class='grid-canvas']/*[@class='ui-widget-content slick-row odd']/*[@class='slick-cell l1 r1 active selected']")).click();
Firepath提供了以下XPath:

.//*[@id='assetsTable']/div[5]/div/div[5]/div[2]
这两个都不起作用。显然,我做得不对。ID是动态生成的,并且是嵌套的,所以我发现很难计算出来。谁能看一下并告诉我定位器的正确方法吗

非常感谢

PS:看起来我不允许上传图片。因此,复制粘贴了以下内容:

<!DOCTYPE html>
<html class="dj_gecko dj_contentbox">
<head>
<body id="bodyID">
<div id="pageDiv" class="page">
<div id="header">
<div id="main">
<ul id="mainMenu" class="menuTab">
<div id="partialHost" style="height: 345.117px;">
<div id="assetsBreadcrumbDiv">
<div id="assetsGridDiv">
<ul id="assetMenu" class="menuTab">
<div id="assetsTable" class="defaultGrid slickgrid_109601 ui-widget" style="overflow: hidden; outline: 0px none; position: relative; height: 269.117px; width: 1562px;">
<div style="position:fixed;width:0;height:0;top:0;left:0;outline:0;" hidefocus="" tabindex="0"></div>
<div class="slick-header ui-state-default" style="overflow:hidden;position:relative;">
<div class="slick-headerrow ui-state-default" style="overflow: hidden; position: relative; display: none;">
<div class="slick-top-panel-scroller ui-state-default" style="overflow: hidden; position: relative; display: none;">
<div class="slick-viewport" style="width: 100%; overflow: auto; outline: 0px none; position: relative; height: 242px;">
<div class="grid-canvas" style="width: 1545px; height: 5975px;">
<div class="ui-widget-content slick-row odd" style="top:775px">
<div class="ui-widget-content slick-row even" style="top:800px">
<div class="ui-widget-content slick-row odd" style="top:825px">
<div class="ui-widget-content slick-row even" style="top:850px">
<div class="ui-widget-content slick-row odd" style="top:875px">
<div class="slick-cell l0 r0 selected">CA</div>
<div class="slick-cell l1 r1 active selected">CANADA</div>
<div class="slick-cell l2 r2 selected">Y</div>
<div class="slick-cell l3 r3 selected"></div>
<div class="slick-cell l4 r4 selected">CA</div>
</div>
<div class="ui-widget-content slick-row even" style="top:900px">
<div class="ui-widget-content slick-row odd" style="top:925px">
<div class="ui-widget-content slick-row even" style="top:950px">

      加利福尼亚州 加拿大 Y 加利福尼亚州
不要使用*,在XPath查询中要显式

这项工作:

//div[@class='slick-cell l1 r1 active selected']

直接在FireBug中尝试XPath查询会得到什么结果?

//div[text()=“CANADA”]应该可以工作。如果你只想要那个特定的元素,那就是

我也尝试过:driver.findElement(By.id(“assetsTable”)/div[@class='slick-viewport']/div[@class='grid-canvas']/div[@class='ui-widget-content-slick row-odd']/div[@class='slick-cell l1 r1-r1-active selected'])。单击();在Firebug(FirePath)中,我得到XPath this:.//*[@id='assetsTable']/div[5]/div/div/7]/div[2]但这不是唯一的,…其他国家可以提供相同的XPath。好的,你试过把它放到Firebug中吗?打开页面,打开Firebug,输入:
$x(“//div[@class='slick-cell l1 r1 active selected']”)
,它找到什么了吗?如果我输入($x(“//div[@class='slick-cell l1 r1 active selected']))Firebug控制台,它会说,”没有子对象“。我有一个很长的国家列表(240)…加拿大只是其中之一,但我找不到唯一标识加拿大的方法,因为其他国家可以提供相同的XPath!在这种情况下,一个覆盖的
div[text()='Canada']
可以。你试过了吗?顺便说一句,我原来的XPath在这里工作正常。也许还有其他原因。你在Chrome上试过吗?