开发者

How can I search for a text and fill/click on a link with Selenium?

Here's the deal:

Is there a way to search for an input name or type witch is not precise and fill it?

For example, I want to fill any input with the name email with my email, but I maybe have some inputs named email-123, emailemail, emails etc... Is there a way to do something like * email * ?

And how c开发者_C百科an I click on a link verifying some text that could be on the link, or above the link, or close, or at class etc ?

ps: I'm using selenium ide with firefox


You can use Xpath to find it with something like //input[contains(@name,'email'). If you have multiple instances like that on the page it will be worth moving your test to your favourite programming language and then doing

emailInstances = sel.get_xpath_count("//input[contains(@name,'email')]")
for i in range(int(emailInstances)):
  sel.type("//input[contains(@name,'email')]["+ i + 1 +"]","email@address.tld")


Xpath works well and the solution above is good. If you are trying to test old verions of IE you could also use JavaScript injection. I find it is very fast, although can be a bit trickier to debug. I didn't actually check if the below works but hopefully it gives you an idea of what you can do:

    String javaScript = "_sl_enterEmailStr = function(parentObj,str) {      "+
            "     var allTags = parentObj.getElementsByTagName('input');    "+
            "     for (var i = 0; i < allTags.length; ++i) {                "+
            "         var tag = allTags[i];                                 "+
            "         if (tag.name && tag.type && tag.type === 'text'       "+
            "             && tag.name.match(/email/)) {                     "+
            "             tag.value = str;                                  "+
            "         }                                                     "+
            "     }                                                         "+
            "};                                                             "+
            "_sl_enterEmailStr(this.browserbot.getCurrentWindow().document  "+
            "                   ,'myemail@mydomain.org');                   ";


     mySelenium.getEval(javaScript);

I find JavaScript injection with regular expressions allows me to do great things to dynamic input fields. Note you can use findElement() to be more specific about where you look for tags.

Regarding clicking a link and getting text, those are simple click() and getText() operations that can be done given the proper locator. I would check out the selenium API. for example, here is the link to the Java one for 1.0b2.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜