求python+selenium元素定位问题

如图,我想提取出元素里“506”这个数字,元素对应的XPATH是://*[@id="if_addr5"],代码应该怎么写?我获取这个元素文本时:element=driver.find_element(By.XPATH,'//*[@id="if_addr5")
print(element.text)得到的结果是空值

您可以尝试使用element.get_attribute('value')来获取该元素的值,因为可能该元素的文本值并非可见文本,而是元素的值属性。代码示例:

如果仍然无法获取到值,可以检查一下该元素是否在页面加载完成后出现,或者是否有iframe或frame嵌套,需要先切换到相应的iframe或frame才能找到该元素。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-29
你可以尝试使用`get_attribute`方法来获取元素的值,如下所示:
```python
element = driver.find_element(By.XPATH, '//*[@id="if_addr5"]')
value = element.get_attribute('value')
print(value)
```
如果元素的值不是输入框中的值,而是通过JavaScript生成的,则上面的方法可能无法获取到值。你可以尝试使用`execute_script`方法来执行JavaScript脚本,如下所示:
```python
element = driver.find_element(By.XPATH, '//*[@id="if_addr5"]')
value = driver.execute_script('return arguments[0].value', element)
print(value)
```
另外,如果元素的值在页面加载完成后是通过Ajax异步加载的,那么你需要等待异步加载完成后再获取元素的值。你可以使用`WebDriverWait`和`expected_conditions`类来实现等待,如下所示:
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="if_addr5"]')))
value = element.get_attribute('value')
print(value)
```
相似回答