无法找到搜索栏

时间:2019-04-24 09:48:12

标签: selenium selenium-webdriver xpath css-selectors webdriverwait

我需要找到一个搜索栏来搜索下面框中列出的一些文本,然后单击它。我尝试使用以下代码,但无法执行该活动。

此代码未在搜索栏中单击:-

<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的图片: enter image description here

4 个答案:

答案 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();