Селен Щелкните элемент без кнопки - PullRequest
0 голосов
/ 14 июля 2020

Итак, я пытаюсь щелкнуть элемент, который не является элементом кнопки, код html приведен ниже:

<div class="menu-item-header">
   <span class="header-title"><span class="icon-wrapper"><i class="icon-helper"></i></span>Help
   </span> <!--When a client clicks this it redirects them to the appropriate place (this is a React website)-->
</div>

Исходный веб-сайт выглядит примерно так:

<div class="menu-item-header">
   <span class="header-title"><span class="icon-wrapper"><i class="icon-helper"></i></span>Help
   </span> <!---->
</div>
<div class="menu-item-header">
   <span class="header-title"><span class="icon-wrapper"><i class="icon-helper2"></i></span>Help2
   </span> <!---->
</div>
...

Я пробовал следующий метод, чтобы щелкнуть элемент:

WebElement element = browser.findElement(...);
element.click();

, но это не сработало.

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Желаемый элемент - это элемент React , поэтому, чтобы щелкнуть элемент с текстом как Help , вам нужно вызвать WebDriverWait для elementToBeClickable(), и вы может использовать любую из следующих на основе стратегии локатора :

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='menu-item-header']/span[@class='header-title' and contains(., 'Help')]"))).click();
0 голосов
/ 14 июля 2020

Вы всегда можете по умолчанию JavaScript.

driver.execute_script("document.getElementById('#<id>').click()");

Или, если он имеет только идентификатор класса:

driver.execute_script("document.getElementsByClassName('.<classname>')[0].click()")

При этом использование промежутков или разделов в качестве кнопок для функциональности не соответствует стандартам доступности, поэтому, если у вас есть доступ к кодовой базе или вы можете на нее повлиять, я настоятельно рекомендую вместо этого использовать кнопку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...