我有一些点击选项卡的测试,但并不总是执行点击。
xpath在测试工作的大部分时间都是正确的
这不是一个时间问题,因为我已经使用thread.sleep()和其他方法来确保元素在点击之前可见
测试认为它正在执行点击,因为它没有抛出一个ElementNotFoundException或任何其他例外,当他们执行'点击。由于选项卡内容不会更改,因此稍后在单击后测试失败。
更多信息 我正在使用Selenium 2.44.0来实现在Chrome 44.0.2403.107 m上运行的Java测试。
我还能做些什么,或者这可能是硒的一个问题?
答案 0 :(得分:18)
您可以尝试以下几种方法:
显式elementToBeClickable
等待:
WebDriverWait wait = new WebDriverWait(webDriver, 10);
WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("myid")));
button.click()
在点击前移动到元素:
Actions actions = new Actions(driver);
actions.moveToElement(button).click().build().perform();
通过javascript点击:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", button);
答案 1 :(得分:0)
如果标签名称包含任何唯一字符串,则可以使用ctrl+u
。并确保您的标签不是动态的。它应该在源代码中可见(手动源代码( <!DOCTYPE html>
<?php
require_once 'Paginator.php';
$con = new mysqli( 'localhost', 'root', 'pixster', 'quotes' );
$limit = ( isset( $_GET['limit'] ) ) ? $_GET['limit'] : 25;
$page = ( isset( $_GET['page'] ) ) ? $_GET['page'] : 1;
$links = ( isset( $_GET['links'] ) ) ? $_GET['links'] : 7;
$query = "SELECT table2.col2 AS a,table1.col2 AS b, table1.col1 AS c, table1.q_url AS d FROM table2, table1 WHERE table2.col1 = table1.col4 ";// AND table2.friendly_url= '".$authorname."'";
$Paginator = new Paginator( $con, $query );
$results = $Paginator->getData( $page, $limit );
?>
<?php for( $i = 0; $i < count( $results->data ); $i++ ) : ?>
<tr>
<td><?php echo $results->data[$i]['$i']; ?></td>
<td><?php echo $results->data[$i]['$row['b']']; ?></td>
</tr>
<?php endfor; ?>
<html>
<head>
<title>quotes Pagination</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="col-md-10 col-md-offset-1">
<h1>PHP Pagination</h1>
<table class="table table-striped table-condensed table-bordered table- rounded">
<thead>
<tr>
<th width="20%">Sr. No</th>
<th width="20%">Quotes</th>
</tr>
</thead>
<tbody>
<?php for( $i = 0; $i < count( $results->data ); $i++ ) : ?>
<tr>
<td><?php echo $results->data[$i]['$i']; ?></td>
<td><?php echo $results->data[$i]['$row['b']']; ?></td>
</tr>
<?php endfor; ?></tbody>
</table>
<?php echo $Paginator->createLinks( $links, 'pagination pagination-sm' ); ?>
</div>
</div>
</body>
</html>
))。
答案 2 :(得分:0)
以下方法对我有用
WebElement button = SeleniumTools.findVisibleElement(By.cssSelector("#cssid"));
Actions actions = new Actions(driver);
actions.moveToElement(button).click().build().perform();