代码隐藏按钮:
<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语句的一部分?
答案 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();`