gpt4 book ai didi

python - 如何使用 Selenium 查找网页中元素的位置?

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:08 24 4
gpt4 key购买 nike

我正在尝试使用 Selenium 在网页上通过 ID 查找元素的位置。但问题是,当我运行 python 代码时,我得到了错误的元素位置。下图说明了我面临的问题。在图片中,黄色圆圈显示 ID 为“ca-talk”的元素,红色圆圈显示我在运行脚本后获得的位置。 enter image description here

代码如下:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from datetime import datetime
import pyautogui
import os
from collections import OrderedDict
import urllib.request
from pathlib import Path
from requests import get
import time

minimumWindow = False

def internet_on():
i = 0
while True:
try:
urllib.request.urlopen('http://www.google.com', timeout=20)
return True
except:
print("Internet not found for last %s minuts" % i)
i = i + 1
time.sleep(60)
pass

browser = webdriver.Chrome()
browser.maximize_window()
if minimumWindow:
pyautogui.moveTo(600, 3, 1)
pyautogui.dragTo(0, 200, 1, button='left')

browser.get('https://en.wikipedia.org/wiki/Main_Page')

e = browser.find_element_by_id('ca-talk')
location = e.location
size = e.size
print(location)
print(size)
pyautogui.moveTo(location['x'], location['y'], 0.1)

(x, y) = pyautogui.position()

print(str(x) + " " + str(y) + "\n")

输出如下:

{'x': 254, 'y': 40}
{'height': 40, 'width': 38}
254 40

而实际位置在 x = 335 和 y = 205 左右。

知道为什么会发生这种情况。谢谢

最佳答案

经过多次尝试和错误,我找到了解决方案。

pyautogui.moveTo(location['x'], location['y'], 0.1)

所有需要做的就是将这一行替换为

a = browser.execute_script("return outerWidth")
c = browser.execute_script("return outerHeight - innerHeight")
b = browser.execute_script("return outerHeight")
pyautogui.moveTo(location['x']*1920/a, (location['y'] + c)*1080/b, 0.1)

这里 1920 和 1080 是我的屏幕分辨率。

我发现由于某种原因,outerWidth 和 outerHeight 返回的值分别不等于 1920 和 1080,因此 1980/a 和 1080/b 的比率给出了获得原始像素的乘数。而 c 负责空间浪费在网址栏和其他不属于网页的部分。这里的 x 和 y 位置是相对于网页而不是屏幕的位置。

如果有人知道为什么 outerWidth 和 outerHeight 不等于 1980 或 1080 那么我想阅读。谢谢。

关于python - 如何使用 Selenium 查找网页中元素的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com