尽管可以看到该字段,但 Webdriver $I->fillField 的代码无法正常工作
Codeception with Webdriver $I->fillField not working although the field is seen
作为 Codeception 的新手,我遇到了以下代码的问题:
$I->click("a.slideout-toggle-add-employee");
$I->wait(2);
$I->seeElement(Locator::find('input', ['placeholder' => 'Vorname']));
$I->fillField(Locator::find('input', ['placeholder' => 'Vorname']),"Testerina");
$I->wait(2);
运行codecept run
时的输出是这样的:
I click "a.slideout-toggle-add-employee"
I wait 2
I see element "//input[@placeholder = 'Vorname']"
I fill field "//input[@placeholder = 'Vorname']","Testerina"
Screenshot and page source were saved into '...' dir
ERROR
在我的设置中,我使用 selenium-standalone 和以下配置:
class_name: AcceptanceTester
actor: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://localhost:19080/'
browser: chrome
host: '127.0.0.1'
port: 4444
restart: false
window_size: 1920x1080
- \Helper\Acceptance
- Asserts
在类似的问题中,我读到 fillField 可能是 PhpBrowser 的问题,但这并没有回答我的问题:seeInField finds the element, while fillField doesn't - CodeCeption
可能是通过页面内的 ajax 传送的,但是由于使用定位器找到了元素,所以我不明白哪里出了问题。我错过了什么?
终于找到了答案 - 有一些未知的隐藏元素匹配了同一个选择器,这个元素导致了异常:
[Facebook\WebDriver\Exception\ElementNotInteractableException] element not interactable.
我发现使用 grabMultiple
函数:
print_r($I->grabMultiple(Locator::find('input', ['placeholder' => 'Vorname'])));
解决方案是使用更具体的选择器:
$I->fillField('.employees-list input[name="user_firstname"]',"Testerina");
作为 Codeception 的新手,我遇到了以下代码的问题:
$I->click("a.slideout-toggle-add-employee");
$I->wait(2);
$I->seeElement(Locator::find('input', ['placeholder' => 'Vorname']));
$I->fillField(Locator::find('input', ['placeholder' => 'Vorname']),"Testerina");
$I->wait(2);
运行codecept run
时的输出是这样的:
I click "a.slideout-toggle-add-employee"
I wait 2
I see element "//input[@placeholder = 'Vorname']"
I fill field "//input[@placeholder = 'Vorname']","Testerina"
Screenshot and page source were saved into '...' dir
ERROR
在我的设置中,我使用 selenium-standalone 和以下配置:
class_name: AcceptanceTester
actor: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://localhost:19080/'
browser: chrome
host: '127.0.0.1'
port: 4444
restart: false
window_size: 1920x1080
- \Helper\Acceptance
- Asserts
在类似的问题中,我读到 fillField 可能是 PhpBrowser 的问题,但这并没有回答我的问题:seeInField finds the element, while fillField doesn't - CodeCeption
可能是通过页面内的 ajax 传送的,但是由于使用定位器找到了元素,所以我不明白哪里出了问题。我错过了什么?
终于找到了答案 - 有一些未知的隐藏元素匹配了同一个选择器,这个元素导致了异常:
[Facebook\WebDriver\Exception\ElementNotInteractableException] element not interactable.
我发现使用 grabMultiple
函数:
print_r($I->grabMultiple(Locator::find('input', ['placeholder' => 'Vorname'])));
解决方案是使用更具体的选择器:
$I->fillField('.employees-list input[name="user_firstname"]',"Testerina");