如何访问 behat+mink 中的 onClick 属性?
How to access onClick attribute in behat+mink?
我们在 Tab1 部分和 Tab2 部分有两个名为“Inschrijven”的按钮,如下图所示
Tab 1:
<span class="form-submit-wrapper"><input type="submit" id="edit-submit--3" name="op" value="Inschrijven" class="form-submit"></span>
Tab 2:
<span class="form-submit-wrapper"><input onclick="return validate_course_anywhere(this)" type="submit" id="edit-submit--22" name="op" value="Inschrijven" class="form-submit"></span>
When I click element with id "edit-submit--3"
此 behat 代码方案适用于选项卡 1 部分,但不适用于选项卡 2 部分 (When I click element with id "edit-submit--22"
)
/**
* @When /^I click element with id "([^"]*)"$/
*/
public function iClickElementWithId($class) {
$locator = "#$class";
$element = $this->getSession()->getPage()->find('css', $locator);
if (null === $element) {
throw new \InvalidArgumentException(sprintf('Could not evaluate CSS selector: "%s"', $locator));
}
$element->click();
$this->getSession()->wait(1000);
}
但错误消息显示在选项卡 2 部分:
Exception thrown by (//html/descendant-or-self::*[@id = 'edit-submit--22'])[1]
Element is not clickable at point (813.5, 16.666671752929688). Other element would receive the click: <a href="/certificering" title="" class="menu__link"></a>
似乎选择器没问题,这里的问题是它不可点击,其他一些元素在它的前面并接收点击。
一些可能的问题:
1.等待元素可见
2. 你有 2 个具有相同 ID 的元素,第一个找到但不可点击
3. 需要时等待页面加载
要使用 onClick 属性,您可以使用 css 选择器,例如:[onclick*='some_value_from_attribute']
您应该有一种通过选择器点击的方法,而不是只针对一个属性的特定方法。
要避免的另一件事是使用盲目等待,您应该尝试使用条件等待。
我们在 Tab1 部分和 Tab2 部分有两个名为“Inschrijven”的按钮,如下图所示
Tab 1:
<span class="form-submit-wrapper"><input type="submit" id="edit-submit--3" name="op" value="Inschrijven" class="form-submit"></span>
Tab 2:
<span class="form-submit-wrapper"><input onclick="return validate_course_anywhere(this)" type="submit" id="edit-submit--22" name="op" value="Inschrijven" class="form-submit"></span>
When I click element with id "edit-submit--3"
此 behat 代码方案适用于选项卡 1 部分,但不适用于选项卡 2 部分 (When I click element with id "edit-submit--22"
)
/**
* @When /^I click element with id "([^"]*)"$/
*/
public function iClickElementWithId($class) {
$locator = "#$class";
$element = $this->getSession()->getPage()->find('css', $locator);
if (null === $element) {
throw new \InvalidArgumentException(sprintf('Could not evaluate CSS selector: "%s"', $locator));
}
$element->click();
$this->getSession()->wait(1000);
}
但错误消息显示在选项卡 2 部分:
Exception thrown by (//html/descendant-or-self::*[@id = 'edit-submit--22'])[1]
Element is not clickable at point (813.5, 16.666671752929688). Other element would receive the click: <a href="/certificering" title="" class="menu__link"></a>
似乎选择器没问题,这里的问题是它不可点击,其他一些元素在它的前面并接收点击。
一些可能的问题: 1.等待元素可见 2. 你有 2 个具有相同 ID 的元素,第一个找到但不可点击 3. 需要时等待页面加载
要使用 onClick 属性,您可以使用 css 选择器,例如:[onclick*='some_value_from_attribute']
您应该有一种通过选择器点击的方法,而不是只针对一个属性的特定方法。
要避免的另一件事是使用盲目等待,您应该尝试使用条件等待。