javascript - 如何扩展列表并选择动态值。

标签 javascript selenium selenium-webdriver

我正在尝试从下面的代码中找出如何从Prod2获取Add New目标的解决方案。

要首先获得此目标,我必须单击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

最佳答案

(假设您使用的是 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();

关于javascript - 如何扩展列表并选择动态值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39213860/

相关文章:

java - 使用动态 id 为 jQuery 中的隐藏字段赋值?

javascript - npm install 类名在我的 li 标签中不起作用

javascript - 我 Hook 哪些事件以使用 ASP.NET 和 Telerik 的 Ajax rad 控件初始化 javascript?

c# - 如何使用 C# 使用 Selenium 将所有元素放入列表或字符串中?

java - 如何同时比较两个列表并执行条件操作?

java - 单击以确认带有 Selenium WebDriver 的模态对话框

javascript - 适用于多种浏览器的 Selenium - 需要可以执行 javascript 的 webDriver

python - 为什么我的程序返回 "No review v1"而不是返回有评论的产品的平均评论?(网络抓取,python)

java - 根据电子表格选择页面上的值 - Java - Selenium Webdriver

java - 使用 Selenium 从具有相同类名的 ajax 下拉元素中选择值