Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何定位未在卷影根中找到的元素

如何定位未在卷影根中找到的元素
EN

Stack Overflow用户
提问于 2019-11-04 10:45:24
回答 1查看 111关注 0票数 0

我是python自动化的新手。所以我想要做的是,我正在尝试在wego.co.in上自动预订机票,但是当我搜索相同的xpath时,即使我认为我得到了正确的xpath,xpath也没有突出显示。

代码语言:javascript
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()

driver.get("https://www.wego.co.in/")

fly_from = driver.find_element_by_xpath('//input[@placeholder="From"]').click()
fly_from.send_keys("New Delhi, India")
sleep(0.1)
fly_to = driver.find_element_by_xpath('//input[@placeholder="to"]').click()
fly_to.send_keys("Goa, India")

我收到“找不到元素”错误

EN

回答 1

Stack Overflow用户

发布于 2019-11-04 11:40:55

该元素位于多个嵌套的shadow-root部分中。您需要像<ifram>一样一次切换到每个部分,但是Selenium没有内置的对shadow-root的支持。

一种解决方法是使用JavaScript以WebElement形式获取shadow-root节,并使用此元素定位节中的元素

代码语言:javascript
运行
AI代码解释
复制
driver.get("https://www.wego.co.in/")

element = driver.find_element_by_id('app')
shadow_root = self.get_shadow_root(driver, element)

element = shadow_root.find_element_by_css_selector('[id="base"] > wego-search-form')
shadow_root = self.get_shadow_root(driver, element)

element = shadow_root.find_element_by_class_name('flightSearchForm')
search_bar_shadow_root = self.get_shadow_root(driver, element)

element = search_bar_shadow_root.find_element_by_id('dep')
shadow_root = self.get_shadow_root(driver, element)

fly_from = shadow_root.find_element_by_css_selector('[placeholder="From"]')
fly_from.click()
fly_from.send_keys("New Delhi, India")

element = search_bar_shadow_root.find_element_by_id('arr')
shadow_root = self.get_shadow_root(driver, element)

fly_to = shadow_root.find_element_by_css_selector('[placeholder="to"]')
fly_to.click()
fly_to.send_keys("Goa, India")

def get_shadow_root(self, driver, element):
    return driver.execute_script('return arguments[0].shadowRoot', element)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58691800

复制
相关文章
元素的定位
这就是普通的文档流采用的定位方式,块元素默认占满一行,块元素之间从上到下排列,垂直排列,块元素有div,p,h1等,如下图,6个div,每个div占满一行
云叶知秋
2023/10/16
1900
元素的定位
AIOps根因定位(二):微服务架构的异常检测与根因定位
本文主要从基于日志、基于trace和基于监控指标这三个方面,初步罗列了微服务架构的异常检测和根因定位的相关论文。
慎笃
2021/09/15
4.2K0
Selenium 如何定位 JavaScript 动态生成的页面元素
Selenium 是一个自动化测试工具,可以用来模拟浏览器的操作,如点击、输入、滚动等。但是有时候,我们需要定位的页面元素并不是一开始就存在的,而是由 JavaScript 动态生成的。这时候,如果我们直接用 Selenium 的 find_element 方法去定位元素,可能会出现找不到元素的错误,因为页面还没有加载完成。为了解决这个问题,我们需要使用一些特定的定位技巧,让 Selenium 等待元素出现后再进行操作。
jackcode
2023/04/19
3.2K0
Selenium 如何定位 JavaScript 动态生成的页面元素
【CSS】定位 ⑤ ( 子元素绝对定位 父元素相对定位 | 代码示例 )
此时就要求父容器必须稳定 , 如果父容器使用了 绝对布局 , 父容器就不会保留位置 ,
韩曙亮
2023/04/16
2K0
【CSS】定位 ⑤ ( 子元素绝对定位 父元素相对定位 | 代码示例 )
利用卷影拷贝服务提取ntds.dit
通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:\Windows\NTDS\ntds.dit文件。那么什么是ntds.dit呢?
红队蓝军
2022/05/17
1.2K0
利用卷影拷贝服务提取ntds.dit
Selenium元素定位
find_element_by_id() find_element_by_name() find_element_by_class_name() find_element_by_tag_name() find_element_by_link_text() find_element_by_partial_link_text() find_element_by_xpath() find_element_by_css_selector() 在这里将对各种元素定位方式统一使用百度首页进行示例,详细操作步骤有以下内容: 1.打开浏览器,进入百度首页(www.baidu.com); 2.百度页面输入关键字 www.testclass.cn 进行搜索; 3.关闭浏览器; 首先,通过前端工具(火狐浏览器的Firebug)或者直接按F12进入开发者模式查看具体前端代码:
Altumn
2019/10/21
1.1K0
Selenium元素定位
Cypress 元素定位
Cypress含有多种定位方式我们无需担心因为定位导致测试失败,Cypress有独一无二的定位策略能使你摆脱元素定位的噩梦。
wencheng
2020/07/16
1.3K0
DOM元素定位
在HTML中有许多如图片等的DOM元素,在网页下拉移动中,DOM元素的位置定位通常通过 position 属性来完成
摸鱼的G
2023/02/22
1K0
selenium元素定位
IT测试前沿
muntainyang
2020/10/23
8720
selenium元素定位
再探勒索病毒之删除卷影副本的方法
为了令勒索攻击实施有效,勒索软件进行的一个常见行动是卷影备份(即影子副本),从而使受害者无法恢复任何已加密的文件。
FB客服
2020/07/06
3.2K0
selenium元素定位
一、selenium元素定位 🐱‍🏍🐱‍👤🐱‍👓🏍🐱‍🚀总结一下元素定位方式,因为项目中会用到,爬虫也会用到,也是为了方便自己和方便后续的同事,总结一下。😄🤞😊😘 1.id定位 from selenium import webdriver from selenium.webdriver.common.by import By # 单个查找 find_element_by_id(locator) find_element(By.ID, locator) # 多个查找 find_elements_by_
懿曲折扇情
2022/08/24
8840
selenium元素定位
JavaScript动态设置根元素的rem
说到rem自然就会想到em,我们知道em是相对于父元素的字体大小的单位,那么rem则是相对于根元素也就是元素的字体大小的单位。
刘亦枫
2020/03/19
4.3K0
利用卷影拷贝服务提取ntds.dit
本文由团队成员编写,首发于先知社区:https://xz.aliyun.com/t/9624
红队蓝军
2022/02/05
9500
利用卷影拷贝服务提取ntds.dit
如何使用Windows卷影拷贝服务恢复文件和文件夹
什么是卷影拷贝? 从Windows XP SP2和Windows Server 2013开始,微软就向Windows操作系统中引入了一项名叫卷影拷贝的服务(Volume Shadow Copy Service-VSS)。这种服务允许Windows系统以自动或手动的方式对文件或磁盘卷宗的当前状态进行备份(或快照),需要注意的是,在这个过程中,即使文件处于打开状态下该服务仍然可以直接进行文件备份。 当这些备份文件被创建之后,它们会被保存在一个特殊的容器中,即卷影拷贝(Volume Shadow Copy)。
FB客服
2018/02/26
3.8K0
如何使用Windows卷影拷贝服务恢复文件和文件夹
【分享】影刀使用xpath捕获指定的元素
//*[@class='discuss_detail_header___3LhnQ']/h1
唯一Chat
2023/10/17
5960
【分享】影刀使用xpath捕获指定的元素
PlayWright(五)- 元素定位
上文我们已经掌握好怎么启动playwright了,我们就可以开启playwright的正式学习之路了?
似小陈吖
2023/10/17
1.6K0
PlayWright(五)- 元素定位
CSS 定位网页元素
当我们在设计网页时,经常需要对网页中的元素进行定位,以便它们出现在我们想要的位置。在 CSS 中,我们可以使用不同的定位属性来定位元素。
久绊A
2023/03/24
1.4K0
定位amdu无法使用的根因并解决
环境: OEL 5.7 + Oracle 10g + amdu_X86-64 现象: 我的两套实验环境,一套单实例,一套RAC,操作系统都是OEL 5.7,数据库都是Oracle 10g,上传同样的amdu介质。一个正常,一个报错:
Alfred Zhao
2019/02/15
9050
点击加载更多

相似问题

如何在卷影根内创建卷影根

21

获取卷影根主机元素

20

在多个卷影根下的href中单击卷影根

12

SVG卷影根已关闭

010

无法访问WCT中的卷影根内的元素

211
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文