css 选择器上的 click() 在 Selenium webdriver 中不起作用 [英] click() on css Selector not working in Selenium webdriver

查看:42
本文介绍了css 选择器上的 click() 在 Selenium webdriver 中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

HTML

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

我没有这个的 id 或名称.所以我写了

I don't have an id or name for this . Hence am writing

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

但是 click() 没有发生.

But click() is not happening.

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

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

试过了value='Search'(单引号).

Tried value='Search' (single quotes).

这些选择器正在工作

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

推荐答案

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

i would inject piece of js to be confident in resolving this issue:

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

first of all locate element using DOM (verify in firebug):

public void jsClick(){

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

从你的元素的回顾来看,它是这样的:

from the retrospective of your element it be like:

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

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

Please, note: document.getElementsByTagName('input') returns you an array of DOM elements. And indexing it properly e.g. document.getElementsByTagName('input')[0], document.getElementsByTagName('input')1, document.getElementsByTagName('input')[2].... ,etc you will be able to locate your element.

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

Hope this helps you. Regards.

这篇关于css 选择器上的 click() 在 Selenium webdriver 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆