我需要找到一个搜索栏来搜索下面框中列出的一些文本,然后单击它。我尝试使用以下代码,但无法执行该活动。
此代码未在搜索栏中单击:-
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Button</th>
</tr>
</thead>
<tbody>
<?php
$stmt = $DB_con->prepare("SELECT * FROM people");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{?>
<tr><td><?php echo $row['id']; ?></td>
<td><?php echo $row['name']; ?></td>
<form method="post" class="del" action="delete.php">
<input type='hidden' class='pid' name='pid' value='<?php echo $row['id']; ?>'>
<button id="send" type="submit">Delete</button>
</form>
</th>
</tr>
<?php
}
?>
HTML的图片:
答案 0 :(得分:1)
所需元素是模态对话框中的ReactJS个启用元素,因此要定位该元素,必须使 WebDriverWait 成为元素clickable ,您可以使用以下任一Locator Strategies:
cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.modal-body#promotion-url-modal-body input.search-input[placeholder='Find a promotion...']"))).click();
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='modal-body' and @id='promotion-url-modal-body']//input[contains(@class, 'search-input') and @placeholder='Find a promotion...']"))).click();
答案 1 :(得分:0)
类可以更改,您需要在失败的步骤中检查HTML。作为解决方法,您可以使用更通用的xpath:
driver.findElement(By.xpath("//input[contains(@class, 'search-input')]"))
答案 2 :(得分:0)
在模态对话框中执行任何操作之前,是否需要切换到新框架?这样做:
menu
然后尝试以下CSS定位器:
driver.switchTo().activeElement();
答案 3 :(得分:0)
您可以向我们提供您要与之交互的网站的链接吗?元素可能位于iframe中,在这种情况下,您需要先切换到iframe,然后才能与该元素进行交互。
确保窗口最大化,因为这会干扰iframe:
driver.manage().window().maximize();
然后,您将需要使用Firebug之类的东西找到iframe的ID
一旦您有了ID:
driver.switchTo().frame("xxxxxxxxx");
与iframe中的所述元素互动:
driver.findElement(By.xpath("html/body/a/img")).click();