鉴于此html:
<input id="test" value="my text" />
使用xpath很容易获得输入元素的句柄。类似的东西:
input[@value="my text"]
但如果原始html看起来像这样:
<input id="test" />
如果你在浏览器中查看它仍然有'我的文字' - 因为这已经添加了这样的javascript:
document.getElementById('test').value = 'my text';
在小提琴中,您可以看到输入字段中包含“我的文字”字样,但没有值属性:https://jsfiddle.net/justinwyllie/5dsxa8mc/
如何选择此元素?只是xpath - 没有jQuery。
答案 0 :(得分:3)
考虑到这是Python + Selenium,我会按照以下方式处理它:
inputs = driver.find_elements_by_tag_name("input") # TODO: improve the locator to get less input elements
input_elm = next(input_elm for input_elm in inputs
if input.get_attribute("value") == "my text")
请注意,get_attribute("value")
会获得.value
属性的计算值,这正是解决此问题的原因。
另请注意,如果不匹配,next()
会引发StopIteration
异常 - 您可以通过try/except
处理该问题,或提供默认值:
input_elm = next((input_elm for input_elm in inputs
if input.get_attribute("value") == "my text"), None)