【问题标题】:How to change value of xpath dynamically如何动态更改xpath的值
【发布时间】:2021-03-27 05:36:06
【问题描述】:

我有以下元素,我想单击每个选项卡并检查输入字段中是否存在值,我想避免为每种语言创建每个 WebElement

有人可以告诉我如何去做吗?否则,我最终会为每种语言设置元素并执行单击并检查文本区域,因此如果可以操纵 xpath 或 css,那就太棒了

@FindBy(xpath = "//div[contains(text(),'dynamically changeable language')]

非常感谢你们。

【问题讨论】:

标签: java selenium xpath automated-tests


【解决方案1】:

您可以尝试使用 for 循环遍历元素。

例如

列出链接 =@FindAll(xpath = "//div[contains(text(),'动态可变语言'));

for(int i =0; i<=links.length; i++){
@Find(xpath = "(//div[contains(text(),'dynamically changeable language)[i]'));

//hear click and check the text
}

如果您想避免使用上述 for 循环,您也可以使用 for each 循环,但它可能会给您带来过时元素错误。

【讨论】:

    【解决方案2】:

    您可以使用类名属性来选择所有元素作为列表,然后对其进行迭代:

    "//div[starts-with(@class,'tabbedTextarea_TabButton')]"
    

    【讨论】:

    • @FindBy(xpath = "//div[starts-with(@class,'tabbedTextarea_TabButton')]") public List listOfLanguageButtons; -> 0 个元素位于
    • @Prozorov ,tabbedTextarea__TabButton 怎么样 - 不清楚截图上有多少下划线...(最好将 HTML 添加为文本)
    • @JaSON 你说得对,它就像@FindBy(xpath ="//div[starts-with(@class,'tabbedTextarea__TabButton')]") 有没有办法通过定位来使用starts通过 css -> @FindBy(css ="*[starts-with(@class,'tabbedTextarea__TabButton')]") ?
    • @Prozorov 在 CSS 中看起来像 "div[class^='tabbedTextarea__TabButton']"
    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 2017-07-06
    • 1970-01-01
    • 2023-03-28
    • 2015-09-10
    • 2022-11-21
    • 2011-07-20
    • 2020-07-11
    相关资源
    最近更新 更多