使用 Python 发送在 Selenium 中不起作用的密钥?

Send Keys Not Working In Selenium With Python?

我正在尝试将密钥发送到某个元素,但它不起作用。

Element looks like this. Unable to send keys to all three.

代码如下:

input id="creditCardNumber" name="creditCardNumber" type="tel" tabindex="1" data-shortname="cc" maxlength="24" class="cc-input ncss-input pt2-sm prl4-sm prl5-md pb2-sm" placeholder="Number" onautocomplete="off" value=""

我用这个来发送密钥:

driver.find_element_by_xpath('//*[@id="creditCardNumber"]').send_keys('0000')

driver.find_element_by_xpath('//input[@placeholder="Number"]').send_keys('0000')

给我一个错误,好像元素不可用,尽管我使用了足够长的 time.sleep.

收到错误:

driver.find_element_by_xpath('//input[@placeholder="Number"]').send_keys('0000') File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 293, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 752, in find_element 'value': value})['value'] File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@placeholder="Number"]"}
(Session info: chrome=64.0.3282.140) (Driver info: chromedriver=2.35.528157 (4429ca2590d6988c0745c24c8858745aaaec01ef),platform=Mac OS X 10.12.2 x86_64)

我注册了 nike 以查找 creditCardNumber 字段,它在 iframe 标签下。切换到那个 iframe,然后搜索元素

<iframe sandbox="allow-scripts allow-same-origin" class="credit-card-iframe mt1 u-full-width" src="https://paymentcc.nike.com/services?id=0971b459-934f-4c0e-bdd1-6b5808a77eb1" frameborder="0" scrolling="no"></iframe>

代码:

driver.switch_to.frame(driver.find_element_by_css_selector('iframe[class="credit-card-iframe mt1 u-full-width"]'))
driver.find_element_by_id('creditCardNumber').send_keys('0000')

让我知道这是否有效