如何使用selenium和java

时间:2018-05-25 08:40:30

标签: java selenium user-interface automation

我试图在selenium中编写一些代码,让我通过使用属性" gamename"来选择一个元素。

当我检查代码时,我得到了这个:

h4 class= "cardTitle_1ifib5" role="gamename">Test Web </h4>

我可以通过xpath选择:

"//*[@id="root"]/div/main/article/div[1]/div[1]/a/section/div[1]/h4"

但我希望每次都可以搜索游戏名称的值,以便我可以使用数据提供者进行搜索。

要明确我想要改变&#34;测试网络&#34;每次我运行函数时都会发生变化。选择器如下:

root&gt; div>主要&gt;文章&gt; div.cards_f1mxfh&gt; div:nth-​​child(2)&gt; a&gt;部分&gt; div.cardTop_1ead8bu&gt; H4

我不知道这是否有帮助

4 个答案:

答案 0 :(得分:0)

Selenium有一个选项,您可以通过该选项检索元素的属性。 [yourXpath].getAttribute("name");

答案 1 :(得分:0)

根据您共享的HTML以及通过value属性识别元素的代码试验,您可以使用以下定位器策略

  • 的xpath

    "//h4[starts-with(@class,'cardTitle_1ifib') and @role='gamename'][normalize-space()='Test Web']"
    

答案 2 :(得分:0)

你想找到确切的文字,似乎XPath就是它:

webDriver.findElement(By.xpath("//h4[contains(text(), '" + yourTestLucas + "')]"));

通过这样做,您可以随时通过数据提供者将值传递给它。

在我阅读您的评论时,您可以将其作为一种方法:

案例1 :如果您只是想找到这个元素:

public WebElement findElementWithRoleName(String yourTestLucas) {
    return webDriver.findElement(By.xpath("//h4[contains(text(), '" + yourTestLucas + "')]"));
}

案例2 :如果您想点击此元素:

public void clickElementWithRoleName(String yourTestLucas) {
    webDriver.findElement(By.xpath("//h4[contains(text(), '"+ yourTestLucas + "')]")).click();
}

答案 3 :(得分:0)

如果我正确理解了问题,这里有几个如何实现属性元素处理的例子:

<强> 1。通过css选择器:

webDriver.findElements(By.cssSelector("h4[role ='gamename']");

<强> 2。通过xPath:

webDriver.findElements(By.xpath("//h4[@role='gamename']"))

webDriver.findElements(By.xpath("//*[@role='gamename']"))

第3。通过WebElement方法:

WebElement element = driver.findElement(...);
element.getAttribute("role")

这个例子中的一些应该有用。

希望这有帮助。