我正在尝试为此查找元素
<a ng-if="showLink && customer.partnerType == 2 && customer.isDirectCustomer" class="cp_text_link ng-binding ng-scope" ng-href="/?orgId=77bc101729ad844e39c4c1e17231c7e4&orgName=Attunix" href="/?orgId=77bc101729ad844e39c4c1e17231c7e4&orgName=ABC">
ABC
</a>
我尝试了XPath和CssSelector,但是找不到元素。 有人可以帮我找到这个元素吗 TIA
答案 0 :(得分:2)
仅使用文本:
in self
答案 1 :(得分:1)
要想找到一个准确的定位器而又不看页面的完整代码是相当困难的,而您正在尝试实现自动化。
从目前为止我所看到的,坚持使用ABC
文本是有意义的,因此请尝试以下操作:
driver.findElement(By.partialLinkText("ABC"));
或等效的XPath
driver.findElement(By.xpath("//a[contains(text(),'ABC')]"));
答案 2 :(得分:0)
尝试使用课程 driver.findElement(By.cssSelector(“ a.cp_text_link”))
答案 3 :(得分:0)
所需元素是Angular元素,因此要在该元素上定位并调用click()
,必须诱使 WebDriverWait 使元素可点击,您可以使用以下基于 Java 的Locator Strategies之一:
partialLinkText
:
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.partialLinkText("ABC"))).click();
cssSelector
:
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.cp_text_link.ng-binding.ng-scope[ng-href*='orgId'][href$='ABC']"))).click();
xpath
:
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='cp_text_link ng-binding ng-scope' and contains(@ng-href, 'orgId')][contains(@href, 'ABC')]"))).click();