selenium PYTHON SELENCE,边缘浏览器,我没有在每个元素上都看到检查元素

vs91vp4v  于 2022-11-10  发布在  Python
关注(0)|答案(2)|浏览(170)

1.我正在尝试从Power BI表中获取数据。将鼠标悬停在table上方时,会出现一些元素。当我右键单击...时,我看不到Inspect Element。然而,当我左键单击该元素时,我可以看到一个菜单,如果我右击任何项目,我可以看到Inspect element。我的第一个问题是,为什么我没有在浏览器中所有元素的右击菜单中看到Inspect Element。我能以某种方式在Selify中以编程方式打开这个...菜单吗?
1.只有在第一次左击之后,导出数据元素才会出现在超文本标记语言中。我假设这是使用Java脚本创建的,为了使用Selify导出数据,我必须通过单击...菜单以编程方式示例化它。Selify是否能够触发在动态网页中生成更多html代码的Java脚本函数?或者我需要以某种方式点击...元素。
1.如果我可以执行一个Java脚本函数,我如何在Edge中找到要执行的Java脚本函数,以及如何在Selify中复制该函数
从本质上讲,如果我试图在Selify中找到Export data元素,它是找不到的,除非我在搜索之前设置了断点,然后在EdgeDriver中打开这个菜单,然后我可以找到它,然后通过Python点击它
1.如果所有其他方法都失败了,我是否可以通过编程方式打开左击菜单,方法是在Selify中的某些坐标上自动单击鼠标?

qxgroojn

qxgroojn1#

**1.1为什么我在所有元素的右击菜单中看不到Inspect Element:**Powerbi有其自己的上下文菜单,因此它们取消了浏览器的上下文菜单。如果元素很难找到dev工具,您可以按Ctrl+Shift+C(当dev工具打开时),然后单击所需的元素。在按组合键之前,您的鼠标需要已经在元素上。

**1.2我是不是可以以某种方式在Selify中以编程方式打开这个...菜单?**看起来有点棘手,但如果您首先找到该区域的标题并将鼠标移动到那里,就可以了,如下所述:https://stackoverflow.com/a/8261754/12914172

那么您的元素应该在html中,您可以通过它的类名vcMenuBtn找到它,这个类名在该页面上似乎是唯一的。但你需要核实这一点。

**2.在动态网页中,Selify是否能够触发生成更多html代码的javascript函数?或者我需要以某种方式点击...元素。**Selify能够执行如下所述的Java脚本:https://stackoverflow.com/a/70544802/12914172

然而,在您的示例中,我快速查看了PowerBI在线页面,这看起来像是一大堆需要理解的反向工程,有时也可能是危险的。我会在该区域进行吸尘器,找到...并点击它。

3.如何在Edge中找到要执行的javascript函数在dev工具中,您可以设置断点来调试页面在操作后所做的步骤。但我再说一次,我不会在这方面投入太多时间。

**4.我可以通过自动鼠标点击Selify中的某些坐标来程序化地打开左击菜单吗?**可以,但这种方式永远不会像上面描述的那样好。如果你还想试一试,也许这个答案会有帮助:https://stackoverflow.com/a/26385456/12914172

xu3bshqb

xu3bshqb2#

多亏了r000bin,这个解决方案对我很有效,我使用Selify for Python从PowerBI下载数据:

import selenium, mouse, time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

url = 'https://dataport.gasunie.nl/Vulling-Gasopslagen-Nederland'
driver = selenium.webdriver.Chrome(service=Service())
driver.get(url)
time.sleep(4)

# driver.fullscreen_window()

# driver.switch_to.window(driver.current_window_handle)

time.sleep(4)
iframe = driver.find_elements(By.TAG_NAME, 'iframe')
assert len(iframe)==1
driver.switch_to.frame(iframe[0])
time.sleep(4)

from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element_with_offset(driver.find_element(By.TAG_NAME, 'html'), 0,0)
actions.move_by_offset('5', '5').click().perform()

time.sleep(4)
button = driver.find_element(By.CLASS_NAME, 'vcMenuBtn')
button.click()
button = driver.find_element(By.ID, '0')
button.click()

# 4 tabs and 1 enter

time.sleep(4)
for n in range(4):
    element = driver.switch_to.active_element
    time.sleep(2)
    element.send_keys(Keys.TAB)
    time.sleep(2)

element = driver.switch_to.active_element
time.sleep(2)
element.send_keys(Keys.ENTER)
driver.close()

相关问题