【发布时间】:2017-10-15 10:41:31
【问题描述】:
我正在尝试使用 Selenium 查找元素。我尝试使用x-path
和class name,但两种方式都无法点击元素。
具体来说,我正在尝试找到新的帐户链接元素,它基本上是一个onclick 属性。
<a onclick="getDashboard().newAccount(event)" href="#" class="dashboard_menu_div_main">
下面是完整的代码。
<div class="dashboard" style="">
<div class="dashboard_context">
<div class="dashboard_context_title">Welcome Muamalaty Portal</div>In relation to the provision of Services and supply of Products by Etisalat Website Customer of Etisalat Website shall observe and be bound by Etisalat Conditions applicable to each.
</div>
<div class="dashboard_Body dashboard-content">
<div class="dashboard_menu_div dashboard-menu">
<ul>
<li>
<a onclick="getDashboard().newAccount(event)" href="#" class="dashboard_menu_div_main">
<div class="dashboard_menu_number">01</div>
<div class="dashboard_menu_img">
<img src="/cim/resources/images/produts/dashboard/new-account.png">
</div>
<div class="dashboard_menu_menu_fonts">New Account</div>
</a>
</li>
<li>
<a onclick="getDashboard().standAlone(event,'714857547');" href="#" class="dashboard_menu_div_main">
<div class="dashboard_menu_number">05</div>
<div class="dashboard_menu_img">
<img src="/cim/resources/images/produts/dashboard/standalone.png">
</div>
<div class="dashboard_menu_menu_fonts">Standalone Devices</div>
</a>
</li>
<li>
<a onclick="new PendingOrders().init({evt:event});" href="#" class="dashboard_menu_div_main">
<div class="dashboard_menu_number">08</div>
<div class="dashboard_menu_img">
<img src="/cim/resources/images/produts/dashboard/pending-orders.png">
</div>
<div class="dashboard_menu_menu_fonts">Pending Orders</div>
</a>
</li>
<li>
<a onclick="getDashboard().newPreOrder(event)" href="#" class="dashboard_menu_div_main">
<div class="dashboard_menu_number">16</div>
<div class="dashboard_menu_img">
<img src="/cim/resources/images/produts/dashboard/new-preorder.png">
</div>
<div class="dashboard_menu_menu_fonts">New PreOrder</div>
</a>
</li>
<li>
<a onclick="new Miscellaneous().init({evt:event});" href="#" class="dashboard_menu_div_main">
<div class="dashboard_menu_number">22</div>
<div class="dashboard_menu_img">
<img src="/cim/resources/images/produts/dashboard/miscellaneous.png">
</div>
<div class="dashboard_menu_menu_fonts">Miscellaneous services</div>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
我尝试了下面的代码,因为有 7 个 iframe 我试图单击所有帧中的位置,并且每次它在所有帧中都失败。
for(int i=0;i<=s1;i++) {
try {
driver.switchTo().frame(i);
driver.findElement(By.xpath("./div[@class=\"dashboard\"]/div[2]/div[@class=\"dashboard_menu_div dashboard-menu\"]/ul/li/a[@onclick=\"getDashboard().newAccount(event)\"]@onclick")).click();
}
catch(Exception e) {
System.out.println("failed "+i+" time");
}
}
我尝试过的其他路径是:
//driver.findElement(By.xpath(".//input[contains(@onclick,'getDashboard().newAccount(event)')]")).click();
//driver.findElement(By.cssSelector("//dashboard_menu_div > ul:nth-child(1) > li:nth-child(1) > a:nth-child(1)")).click();
【问题讨论】:
-
框架内有一个HTML表单标签,其中包含Type=hidden之类的属性,可能是这个原因我们找不到元素
标签: java selenium selenium-webdriver selenium-firefoxdriver xpath-2.0