首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在浏览器呈现元素位置之后,是否获得了元素位置?

在浏览器呈现元素位置之后,是否获得了元素位置?
EN

Stack Overflow用户
提问于 2022-10-09 06:59:23
回答 2查看 33关注 0票数 0

下面的页面,https://www.zjzwfw.gov.cn/zjservice/front/index/page.do?webId=1,我想定位‘城乡居民养老保险参保登记’,然而,这个文本信息不在web源代码中,但是我可以正确地获得这个元素信息,我对此很好奇。守则如下:

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
import chromedriver_autoinstaller
from selenium.webdriver.chrome.service import Service
from xpath_helper import xh, filter
chromedriver_autoinstaller.install('/Users/project/chromedriver')
options = webdriver.ChromeOptions()
options.add_argument('--headless')
browser = webdriver.Chrome(service=Service())
browser.get("https://www.zjzwfw.gov.cn/zjservice/front/index/page.do?webId=1")

#%%
el = xh.get_element(filter.value_contains(str('城乡居民养老保险参保登记')))
html1 = browser.find_element(By.XPATH,str(el))
html1.click() ## It runs correctly.
EN

回答 2

Stack Overflow用户

发布于 2022-10-09 07:07:21

是的,您是对的,元素是在呈现后生成的。

有些元素是JavaScript生成的,因此在浏览器呈现之前可能不会轻易出现在源中。

有时,您可能会发现元素没有找到,因此您可能不得不等待,直到使用元素可见为止。

票数 0
EN

Stack Overflow用户

发布于 2022-10-09 07:19:13

通过应用browser.get()方法,Selenium将根据选定的页面加载策略等待加载页面。默认的页面加载策略是normal。根据此页面中的文档加载策略,WebDriver应该在导航之后等待文档就绪状态“完成”。

因此,您的问题的答案是,在这种特殊情况下,Selenium将等待加载页面。

这并不取决于您使用什么定位器XPath、CSS选择器、ID或任何其他。

重要的是要理解,如果Selenium命令browser.find_element(By.XPATH,str(el))出现在其他命令之后,比如element.click() Selenium将而不是等待该元素的呈现,直到您使用WebDriverWait,比如wait.until(EC.element_to_be_clickable((By.ID, "the_id"))).click()

这是因为驱动程序隐式等待的默认值是0 (文件)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74002705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档