使用xpath定位按钮 - Chrome中的JAVA / Selenium 2

时间:2014-08-28 21:40:09

标签: java selenium xpath selenium-webdriver

代码隐藏按钮:

<input class=”btn” id=”mypage:formid:relatedScenaiosListId:j_id27:j_id28″ name=”mypage:formid:relatedScenaiosListId:j_id27:j_id28″ onclick=”window.open(‘/apex/newscenario?Opportunity__c=006f00000072n8hAAA’,’_top’, 1);;A4J.AJAX.Submit(‘mypage:formid’,event,{‘similarityGroupingId’:’mypage:formid:relatedScenaiosListId:j_id27:j_id28′,’parameters’:{‘mypage:formid:relatedScenaiosListId:j_id27:j_id28′:’mypage:formid:relatedScenaiosListId:j_id27:j_id28′} } );return false;” value=”New” type=”button”>

我从Inspect Element视图右键单击,看到我可以复制Xpath并发现它是:

//*[@id="mypage:formid:relatedScenaiosListId:j_id27:j_id28"]

请注意*。

我累了:

WebElement txtnew = driver.findElement(By.xpath(“//input[@id='mypage:formid:relatedScenaiosListId:j_id27:j_id28']“));
txtnew.click();

WebElement txtnew = driver.findElement(By.xpath(“//input[@id='mypage:formid:relatedScenaiosListId:j_id27:j_id28'][@value='New']“));
txtnew.click();

但都没有奏效。

我对*很好奇,如果那应该是我的Xpath语句的一部分?

3 个答案:

答案 0 :(得分:1)

如果您没有必要使用xpath,请使用id或cssSelectors搜索来查找元素。 E.g。

//if you have only one element with class btn you can use this selector
//if element placed in parent (and this can identify element much more) add selector to
//parent before .btn
WebElement txtnew = driver.findElement(By.Css(".btn"));
//or
WebElement txtnew = driver.findElement(By.Css("input[value='New']"));
//or if id not generated automatically
WebElement txtnew = driver.findElement(By.Css("#mypage:formid:relatedScenaiosListId:j_id27:j_id28"));
//or using By.Id
WebElement txtnew = driver.findElement(By.Id("mypage:formid:relatedScenaiosListId:j_id27:j_id28"));

他们中的任何一个都会在特定情况下工作。选择一个更适合您的情况。感谢。

答案 1 :(得分:1)

试试这个xpath:

input[@value='New'][@class='btn'][starts-with(@id, 'mypage:formid')]

答案 2 :(得分:0)

我没有意识到的真正问题是控件处于不同的框架中。一旦我设置驱动程序以查看框架,任何数量的xpath表达式都可以工作。

`driver.manage()。timeouts()。implicitlyWait(25,TimeUnit.SECONDS);       driver.switchTo()帧( “066i0000004bNpx”);

 WebElement txtNewbtn = driver.findElement(By.id("mypage:formid:relatedScenaiosListId:j_id27:j_id28"));
 txtNewbtn.click();`