11

HTML

<input class="button" type="button" onclick="$.reload('results')" value="Search">

我没有这个的 id 或名称。因此我在写

FirefoxDriver driver = new FirefoxDriver();
driver.get("http://....");
driver.findElement(By.cssSelector("input[value=Search]")).click();

但是 click() 没有发生。

试过 driver.findElement(By.cssSelector(".button[value=Search]")).click();

尝试值='搜索'(单引号)。

这些选择器正在工作

.button[value=Search] {
padding: 10px;
}
input[value=Search] {
padding: 10px;
}
4

4 回答 4

2

我会注入一段js来有信心解决这个问题:

首先使用 DOM 定位元素(在 firebug 中验证): 定位

public void jsClick(){

        JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("document.getElementsByTagName('button')[0].click();");
        js.executeScript(stringBuilder.toString());
    }
jsClick();

从你的元素的回顾来看,它就像:

....
stringBuilder.append("document.getElementsByTagName('input')[0].click();");
....

请注意:document.getElementsByTagName('input') 返回一个 DOM 元素数组。并正确索引它,例如 document.getElementsByTagName('input')[0], document.getElementsByTagName('input') 1 , document.getElementsByTagName('input')[2].... 等,您将能够找到你的元素。

希望这对您有所帮助。问候。

于 2012-10-24T12:49:50.200 回答
1

请使用以下代码。

driver.findElement(By.cssSelector("input[value=\"Search\"]")).click();

这个对我有用。并确保名称是“搜索”,因为它区分大小写。

谢谢

于 2013-10-16T09:53:01.053 回答
0

你确定input[value=Search]在你的页面上使用这个 CSS 选择器 ( ) 你只有一个结果吗?

于 2012-11-01T13:35:19.557 回答
0

您的代码中缺少单引号,应将[value=Search]替换为[value='Search']

首先,您必须检查您正在使用的选择器是否有效..

如果您使用的是 chrome 或 FF,您可以按照以下步骤操作,

  1. 转到存在按钮(要单击)的页面,

  2. 打开 web 控制台并输入以下内容,然后单击 enter..

    $("输入[值='搜索']")

或者

$("input[value='Search'][type='button']")

或者

$("input[value='Search'][type='button'].button")

您将获得可以使用此选择器访问的元素列表,如果该列表仅包含一个元素(您要单击的按钮),则此选择器对您的使用有效..否则您必须尝试其他选择器..

如果上述任何选择器有效,则必须相应地更改您的代码..

driver.findElement(By.cssSelector("input[value='Search'][type='button'].button")).click();
于 2013-10-16T11:11:07.333 回答