通过HTML输入从cssSelector获取Selenium WebElement

时间:2016-06-16 19:43:49

标签: java selenium

我对Selenium很新(今天开始),我想得到对应于以下html输入的WebElement:

<input size="25" style="text-align:center;" value="http" onclick="this.select();" type="text"></input>

然后获得它的价值。这是我到目前为止所尝试的:

WebElement element = driver.findElement(By.cssSelector(".text-align:center"));
String text = element.getText();

或者这个:

WebElement element = driver.findElement(By.cssSelector("input[style='text-align:center']"));

但Java在两种情况下都返回异常:

  

org.openqa.selenium.InvalidSelectorException:给定的选择器   .text-align:center无效或不会导致   WebElement

谢谢你, 埃克托

2 个答案:

答案 0 :(得分:2)

您是否必须通过cssSelector搜索元素?

你可以尝试一下:

WebElement element = driver.findElement(By.cssSelector("input[type='text']"));

如果不需要cssSelector,您可以尝试通过xpath抓取元素。 如果您使用firefox,则会有一个名为FireBug的插件,它允许您在检查元素后直接复制并直接复制xpath,然后使用:

WebElement element = driver.findElement(By.xpath("XPATH HERE"));

编辑:部分帖子消失了,重新加了。

答案 1 :(得分:0)

你的第一次尝试稍微关闭

driver.findElement(By.cssSelector(".text-align:center"));

CSS选择器中的(。)表示CSS类名,但它是元素上的样式而不是类。该元素没有以这种方式使用的类。

你的第二次尝试看起来不错,但也许它在页面上不是唯一的?很难说只有一行HTML。您必须提供更多页面的HTML。再试一次,但得到value而不是文字。

WebElement element = driver.findElement(By.cssSelector("input[style='text-align:center']"));
System.out.println(element.getAttribute("value"));

这有用吗?您可能需要提供一些围绕INPUT的唯一HTML,我们可以使用它来使CSS选择器更具体。