我试图找出解决方案如何从下面的代码中 Prod2 获得添加新的目标。
首先要获得此目标,我必须点击 ptv-icon ptv-collapse-icon 。这可以使用XPATH,但每次运行脚本xpath都在改变。
是否可以使用任何方法直接本地化添加新。
另一个问题是:添加新元素仅在我点击 ptv-icon ptv-collapse-icon 后才可见。
<li class="ptv-listitem" data-id="1">
<div class="ptv-item">
<span class="ptv-icon ptv-expand-icon"></span>
<span class="ptv-text">
<span class="tree-text">Prod1</span>
<span class="tree-counts"></span>
</span>
</div>
</li>
<li class="ptv-listitem" data-id="2">
<div class="ptv-item">
<span class="ptv-icon ptv-collapse-icon"></span>
<span class="ptv-text ptv-selected">
<span class="tree-text">Prod2</span>
<span class="tree-counts"></span>
</span>
</div>
<ul class="ptv-list ptx-expanded">
<li class="ptv-listitem" data-id="-1">
<div class="ptv-item">
<span class="ptv-text">
<span class="tree-text">**Add New**</span>
<span class="tree-counts"></span>
</span>
</div>
</li>
</ul>
</li
答案 0 :(得分:0)
您可以通过两类ul和一个span类来选择元素:
WebDriver.findElement(By.cssSelector("ul.ptv-list.ptx-expanded span.tree-text")).click()
这意味着选择具有span
类的tree-text
元素,该元素位于同时包含ul
和ptv-list
类的ptx-expanded
元素中。
答案 1 :(得分:0)
(假设你正在使用Java)你应该尝试使用xpath
文本,这些文本永远不会改变如下: -
//to click on prod2
driver.findElement(By.xpath(".//li[contains(.,'Prod2')]//span[@class = 'ptv-icon ptv-expand-icon']").click();
//to click on add new
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath(".//li[contains(.,'Add New')]"))).click();