硒exceptions.NoSuchElementException:
selenium exceptions.NoSuchElementException:
html 代码片段为:
<thead id="addDet:cust:th" class="emp">
<tr id="addDet:cust:ch" class="emp">
<th class="emp" scope="col" id="addDet:cust:ch:j_idt484">S. No.</th>
<th class="emp" scope="col" id="addDet:cust:ch:j_idt487">Name
<font color="#FA5882">*</font></th>
我尝试将字段填写为:
driver.find_element_by_id("addDet:cust:j_idt487").send_keys("XX")
但我得到的错误是:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"psdetail:j_idt490"}
任何帮助都将不胜感激。
您的代码中有错字。你忘记了 :cust:
之后的 :ch:
。
修复您的选择器 (Imcphers answer/comments) 后,在您尝试查找该元素时,该元素是否可能不在 DOM 中?是动态加载的吗?如果是这样,您可能必须使用 explicit
或 implicit
等待。
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp
试试看
driver.implicitly_wait(10)
初始化驱动程序后
尝试使用 xpath 包含或 CSS 开头
//xpath
“//*[包含(。,'S. No.')]”
id
属性值看起来很像动态生成的。在这种情况下,依赖它不是一个好主意。相反,使用元素的文本:
driver.find_element_by_xpath("//th[. = 'S. No.']")
您提供的 xpath 没有指向要输入数据的字段,实际上它指向 header 列。这就是您无法向其中输入数据的原因。
请尝试使用下面的 xpath 在乘客详细信息的第一行填写姓名和年龄:
- 下面的代码将在第一行填写乘客姓名:
driver.find_element_by_xpath("(//tbody[@id='addPassengerForm:psdetail:tb']//input[contains(@id,'psgnName')])[1]").send_keys("ABC")
- 下面的代码将在第一行填写乘客的年龄:
driver.find_element_by_xpath("(//tbody[@id='addPassengerForm:psdetail:tb']//input[contains(@id,'psgnAge')])[1]").send_keys("24")
与将数据输入乘客姓名的下一行类似,您只需将 xpath 的最后一部分从 [1]
调整为 [2]
。
html 代码片段为:
<thead id="addDet:cust:th" class="emp">
<tr id="addDet:cust:ch" class="emp">
<th class="emp" scope="col" id="addDet:cust:ch:j_idt484">S. No.</th>
<th class="emp" scope="col" id="addDet:cust:ch:j_idt487">Name
<font color="#FA5882">*</font></th>
我尝试将字段填写为:
driver.find_element_by_id("addDet:cust:j_idt487").send_keys("XX")
但我得到的错误是:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"psdetail:j_idt490"}
任何帮助都将不胜感激。
您的代码中有错字。你忘记了 :cust:
之后的 :ch:
。
修复您的选择器 (Imcphers answer/comments) 后,在您尝试查找该元素时,该元素是否可能不在 DOM 中?是动态加载的吗?如果是这样,您可能必须使用 explicit
或 implicit
等待。
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp
试试看
driver.implicitly_wait(10)
初始化驱动程序后
尝试使用 xpath 包含或 CSS 开头 //xpath “//*[包含(。,'S. No.')]”
id
属性值看起来很像动态生成的。在这种情况下,依赖它不是一个好主意。相反,使用元素的文本:
driver.find_element_by_xpath("//th[. = 'S. No.']")
您提供的 xpath 没有指向要输入数据的字段,实际上它指向 header 列。这就是您无法向其中输入数据的原因。
请尝试使用下面的 xpath 在乘客详细信息的第一行填写姓名和年龄:
- 下面的代码将在第一行填写乘客姓名:
driver.find_element_by_xpath("(//tbody[@id='addPassengerForm:psdetail:tb']//input[contains(@id,'psgnName')])[1]").send_keys("ABC")
- 下面的代码将在第一行填写乘客的年龄:
driver.find_element_by_xpath("(//tbody[@id='addPassengerForm:psdetail:tb']//input[contains(@id,'psgnAge')])[1]").send_keys("24")
与将数据输入乘客姓名的下一行类似,您只需将 xpath 的最后一部分从 [1]
调整为 [2]
。