Selenium Webdriver - 无法单击按钮

时间:2016-01-18 11:24:33

标签: java selenium xpath selenium-webdriver

HTML code:

<div class="buttonBG">  
<input type="button" onclick="window.location.href='?mod=eA&amp;act=00001';"        class="buttonGreen" value="TK">         
<input type="button" onclick="ttoggle('carianDiv');" class="buttonGreen"   value="CK"> 
</div> 

下面是我的java代码,当我尝试使用下面的代码时。我能否知道我的selenium webdriver代码中有什么错误:

driver.findElement(By.xpath("//input[@class='buttonGreen' and  contains(@onclick, 'window.location.href='?mod=eA&act=00001')]")).click();

2 个答案:

答案 0 :(得分:1)

尝试按值搜索

driver.findElement(By.cssSelector("[value='TK']")).click();

出了什么问题,你在html中搜索?mod=eA&act=00001

?mod=eA&amp;act=00001

  

修改

另一种解决方案是将按钮插入列表并按索引点击:

List<WebElement> buttons = driver.findElements(By.className("buttonGreen"));
buttons.get(0).click();

您也可以尝试使用显式等待

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[value='TK']")).click();

在点击按钮之前,此按钮最长可等待10秒钟。您可以更改选择器或时间范围。

答案 1 :(得分:1)

尝试使用XPath而不是CSS

driver.find_element(By.XPATH, '//input[@onclick=\'window.location.href=\'?mod=eA&amp;act=00001\';\']').click()

修改

以下是切换到iFrame的代码,

driver.switchTo().frame("frame_name");

注意:在iframe中完成操作后,您必须使用以下命令再次返回主窗口。

driver.switchTo().defaultContent();