我无法在https://www.hmm21.com/cms/business/hongkong/export/vgmWithoutLogin/index.jsp
的“预订号”文本框中输入文本。这是在chrome上使用inspect的文本框的html:
<input style="width:200px;text-transform:uppercase;ime-mode:disabled;" type="text" maxlength="12" name="bookingNumber" value="">
这是我现在使用的代码:
element = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='bookingNumber']"))).send_keys('test')
我也尝试了许多其他方法,例如使用CSS Selector,绝对xpath进行选择,但我似乎无法在文本框中输入任何内容。
我还使用ChroPath,其他一些chrome扩展程序以及Firefox上的xPath Finder测试了xpath和CSS选择器,它们似乎都可以正常工作。
如果有人可以帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
在发送键之前尝试单击该元素,您也可以执行JavaScript来修改其值。
.click()
如果输入是通过JavaScript显示的,请等待该元素出现并且不可单击。
.presence_of_element_located()
答案 1 :(得分:0)
您应该先切换iframe,然后使用
WebDriverWait(self.driver, 10).until(EC.frame_to_be_available_and_switch_to_it(self.driver.find_element_by_id('_frame1')))
因为预订号文本框输入元素位于名为'_frame1'的新iframe中。
希望它会对您有所帮助。
答案 2 :(得分:0)
要将字符序列发送到与文本 Booking Number 相关的元素,因为所需元素位于<iframe>
中,因此您必须:
您可以使用以下解决方案:
使用CSS_SELECTOR
:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#_frame1[src='/ebiz/ebooking/vgm/indexWithoutlogin.jsp']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='bookingNumber']"))).send_keys('Rong Heng')
使用XPATH
:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='_frame1' and @src='/ebiz/ebooking/vgm/indexWithoutlogin.jsp']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='bookingNumber']"))).send_keys('Rong Heng')
在这里您可以找到有关Ways to deal with #document under iframe的相关讨论
答案 3 :(得分:0)