Javascript 如何展开列表并选择动态值。
我正试图从下面的代码中找出如何从Prod2中获得添加新的目标的解决方案 为了首先达到这个目标,我必须点击ptv图标ptv折叠图标。这可以使用XPATH实现,但每次运行脚本时,XPATH都会发生变化 是否可以使用任何方法来本地化直接添加新的 另一个问题是:addnew元素只有在我点击ptv图标ptv-collapse图标后才可见Javascript 如何展开列表并选择动态值。,javascript,selenium,selenium-webdriver,Javascript,Selenium,Selenium Webdriver,我正试图从下面的代码中找出如何从Prod2中获得添加新的目标的解决方案 为了首先达到这个目标,我必须点击ptv图标ptv折叠图标。这可以使用XPATH实现,但每次运行脚本时,XPATH都会发生变化 是否可以使用任何方法来本地化直接添加新的 另一个问题是:addnew元素只有在我点击ptv图标ptv-collapse图标后才可见 <li class="ptv-listitem" data-id="1"> <div class="ptv-item"> <span cla
<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
产品1
产品2
-
**新增**
您可以通过2类ul和1类span选择元件:
WebDriver.findElement(By.cssSelector("ul.ptv-list.ptx-expanded span.tree-text")).click()
这意味着选择一个span
元素,该元素具有tree text
类,它位于ul
元素中,该元素同时具有ptv列表
和ptx扩展
类。您可以通过ul的两个类和span的一个类来选择该元素:
WebDriver.findElement(By.cssSelector("ul.ptv-list.ptx-expanded span.tree-text")).click()
这意味着选择一个span
元素,该元素具有tree text
类,它位于ul
元素中,该元素同时具有ptv列表
和ptx扩展的
类。(假设您使用的是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();
(假设您使用的是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();
非常感谢。你的代码最适合我的问题。只是我不得不更换一些零件,谢谢你。你的代码最适合我的问题。只是我必须先更换一些零件