Selenium Webdriver.By中所有静态函数的单行

时间:2017-01-04 04:03:33

标签: javascript selenium-webdriver automated-tests

var findById = driver.findElement(By.id("id"))
var findByClass = driver.findElement(By.className("class"))
var findByXpath = driver.findElement(By.xpath("xpath"))

是否可以用一条线替换上面的所有右侧;说

var dynamicLocator = "id" | "className" | "xpath";
var find = driver.findElement(By.dynamicLocator("something"))

我理解这是摆弄引号的问题,但是我似乎无法回避。

1 个答案:

答案 0 :(得分:0)

如果您使用cssSelector代替xpath,则可以使用,。例如对于html

<div class="parentClass">
  <div id="targetId" class="targetClass"></div>
</div>

你可以做到

By dynamicLocator = By.cssSelector("#targetId, .targetClass, .parentClass > .targetId");

这将返回由ID targetId或类targetClass创建的第一个元素,或者返回类targetClass的元素.mace是类parentClass的元素的直接子元素(带有xpath它看起来像//div[@class='parentClass']/div[@class='targetClass'])。