尝试选择以下元素时遇到一些问题:
<div class="x-layer x-combo-list " id="ext-gen452" style="position: absolute; z-index: 11000; visibility: visible; left: 89px; top: 66px; width: 398px; height: 20px;">
<div class="x-combo-list-inner" id="ext-gen454" style="width: 398px; overflow: auto; height: 20px;">
<div ext:qtip="xxxWebService@xxx.com" class="x-combo-list-item x-combo-selected">xxxWebService@xxx.com
</div>
</div>
</div>
我希望能够使用ext:qtip =&#34; xxxWebService@xxx.com"但是它一直说它无法找到元素,我可以对我需要做些什么进行一些指导,以便能够找到元素吗?
WebDriverWait waitAgent = new WebDriverWait(_driver, TimeSpan.FromSeconds(2));
waitAgent.Until(ExpectedConditions.ElementToBeClickable(By.XPath(("//div/div/div*[@ext:qtip='xxxWebService@xxx.com]'))))
.Click();
答案 0 :(得分:0)
您可以在xpath下面使用: -
//div[@class='x-combo-list-item x-combo-selected']
正如我所见,您还尝试使用电子邮件ID进行搜索,然后您可以使用XPath,如下所示 : -
(//div[contains(.,'xxxWebService@xxx.com')])[3]
或者更具体,id不是动态的: -
//div[@id='ext-gen452']/div/div[@class='x-combo-list-item x-combo-selected']
如果id为动态或非唯一,您可以将id替换为class。与班级相同
如果上述解决方案也无效,请使用等待..必须有等待问题
希望它能帮到你
答案 1 :(得分:0)
我觉得您使用的xpath
存在一个小问题:
By.XPath(("//div/div/div*[@ext:qtip='xxxWebService@xxx.com]')))
您已使用div*
,其中*
似乎不必要。此外,收盘"
缺失,收盘'
错位。再次,当您在DOM
中穿越div
时,与//div/div/div
中的id
一样,我们本来希望使用父div
的{{1}}。在DOM tree
中是唯一的。因此,根据您的要求使用属性ext:qtip = "xxxWebService@xxx.com"
的以下代码块可能符合您的目的。
WebDriverWait waitAgent = new WebDriverWait(_driver, TimeSpan.FromSeconds(5));
waitAgent.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@id='ext-gen454']/div[@ext:qtip='xxxWebService@xxx.com']"))).Click();