使用 Selenium 检查 AngularJS 复选框
Check AngularJS checkbox with Selenium
这看起来微不足道,但经过数小时的尝试,我无法设法使用 Selenium 选中此复选框。我可以 select 元素没问题,甚至可以通过向元素发送 Keys.RETURN 来 'highlight' (参见下面的代码片段),但是在尝试单击它时,什么都没发生。也许有人有想法?
我已经尝试过的:
- 与 WebDriverWait 一起使用
- 使用 .click()/.send_keys(Keys.RETURN)
的多种不同组合
- Selenium 接受的几乎所有 XPATH/css selector/id/name/classname/text 元素的组合,以及它的所有子元素和大部分父元素(包括 spans/labels,以及里面的文本标签本身)。
- 使用操作直接点击 element/label 坐标(没有任何反应,即使我可以 100% 确认它使用 context_click() 点击了正确的位置)。
- 使用 execute_script 将“checked”属性更改为 True(复选框显示为已选中,但很明显它只是客户端,因为当实际单击时应该呈现的框不会t).
- 使用execute_script将class更改为'ng-valid ng-not-empty ng-dirty ng-valid-parse ng-touched'
这是我觉得最接近我的代码(它是'highlighting'方框seen here)
browser.find_element(By.ID, "sp_formfield_none_of_the_above").send_keys(Keys.RETURN)
经过一段时间的测试终于解决了。希望这对将来的人有帮助。我不得不使用 JS 在复选框元素上执行 .click() 。回想起来,我应该早点尝试这个解决方案。查看代码片段:
cb_none = browser.find_element(By.ID, 'sp_formfield_none_of_the_above')
browser.execute_script("arguments[0].click();", cb_none)
这看起来微不足道,但经过数小时的尝试,我无法设法使用 Selenium 选中此复选框。我可以 select 元素没问题,甚至可以通过向元素发送 Keys.RETURN 来 'highlight' (参见下面的代码片段),但是在尝试单击它时,什么都没发生。也许有人有想法?
我已经尝试过的:
- 与 WebDriverWait 一起使用
- 使用 .click()/.send_keys(Keys.RETURN) 的多种不同组合
- Selenium 接受的几乎所有 XPATH/css selector/id/name/classname/text 元素的组合,以及它的所有子元素和大部分父元素(包括 spans/labels,以及里面的文本标签本身)。
- 使用操作直接点击 element/label 坐标(没有任何反应,即使我可以 100% 确认它使用 context_click() 点击了正确的位置)。
- 使用 execute_script 将“checked”属性更改为 True(复选框显示为已选中,但很明显它只是客户端,因为当实际单击时应该呈现的框不会t).
- 使用execute_script将class更改为'ng-valid ng-not-empty ng-dirty ng-valid-parse ng-touched'
这是我觉得最接近我的代码(它是'highlighting'方框seen here)
browser.find_element(By.ID, "sp_formfield_none_of_the_above").send_keys(Keys.RETURN)
经过一段时间的测试终于解决了。希望这对将来的人有帮助。我不得不使用 JS 在复选框元素上执行 .click() 。回想起来,我应该早点尝试这个解决方案。查看代码片段:
cb_none = browser.find_element(By.ID, 'sp_formfield_none_of_the_above')
browser.execute_script("arguments[0].click();", cb_none)