在运行 Selenium 时,网页 python 中的 UI 被破坏

发布于 01-17 03:16 字数 1509 浏览 4 评论 0 原文

硒有问题。尝试解析一个网页并在运行时我的用户界面损坏,因此无法用文本填充字段(出现不可交互的错误) 输入图片此处描述

总体外观如何 运行 selenium

在此处输入图像描述

消息:元素不可交互(会话信息: chrome=99.0.4844.84) 堆栈跟踪:回溯:Ordinal0 [0x00BF9943+2595139]序数0 [0x00B8C9F1+2148849]序数0 [0x00A843F0+1065968]序数0 [0x00AAC4D3+1230035]序数0 [0x00AABB8B+1227659]序数0 [0x00ACB9EC+1358316]序数0 [0x00AA7474+1209460]序数0 [0x00ACBC04+1358852]序数0 [0x00ADBAF2+1424114]序数0 [0x00ACB806+1357830]序数0 [0x00AA6086+1204358] Ordinal0 [0x00AA6F96+1208214] GetHandleVerifier [0x00D9B232+1658114] GetHandleVerifier [0x00E5312C+2411516] GetHandleVerifier [0x00C8F261+560433] GetHandleVerifier [0x00C8E366+556598]序数0 [0x00B9286B+2173035]序数0 [0x00B975F8+2192888]序数0 [0x00B976E5+2193125]序数0 [0x00BA11FC+2232828]BaseThreadInitThunk[0x773EFA29+25] RtlGetAppContainerNamedObjectPath [0x77AA7A7E+286] RtlGetAppContainerNamedObjectPath [0x77AA7A4E+238]

我的代码:

url = "https://opi.dfo.kz/p/ru/archive-publication/corporative-events-2020-14-07"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
element = driver.find_element(By.XPATH, '//*[@id="CorporativeEvents20201407"]/div[1]/div[1]/div/div[2]/div[1]/span[3]')
element.send_keys('010140000143')

请帮助我!

having trouble with selenium. Trying to parse one webpage and while running it Im having broken UI, therefore couldn't fill fields with text(getting error not interactable)
enter image description here

how it looks in general
what i have after running selenium

enter image description here

Message: element not interactable (Session info:
chrome=99.0.4844.84) Stacktrace: Backtrace: Ordinal0
[0x00BF9943+2595139] Ordinal0 [0x00B8C9F1+2148849] Ordinal0
[0x00A843F0+1065968] Ordinal0 [0x00AAC4D3+1230035] Ordinal0
[0x00AABB8B+1227659] Ordinal0 [0x00ACB9EC+1358316] Ordinal0
[0x00AA7474+1209460] Ordinal0 [0x00ACBC04+1358852] Ordinal0
[0x00ADBAF2+1424114] Ordinal0 [0x00ACB806+1357830] Ordinal0
[0x00AA6086+1204358] Ordinal0 [0x00AA6F96+1208214] GetHandleVerifier
[0x00D9B232+1658114] GetHandleVerifier [0x00E5312C+2411516]
GetHandleVerifier [0x00C8F261+560433] GetHandleVerifier
[0x00C8E366+556598] Ordinal0 [0x00B9286B+2173035] Ordinal0
[0x00B975F8+2192888] Ordinal0 [0x00B976E5+2193125] Ordinal0
[0x00BA11FC+2232828] BaseThreadInitThunk [0x773EFA29+25]
RtlGetAppContainerNamedObjectPath [0x77AA7A7E+286]
RtlGetAppContainerNamedObjectPath [0x77AA7A4E+238]

my code:

url = "https://opi.dfo.kz/p/ru/archive-publication/corporative-events-2020-14-07"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
element = driver.find_element(By.XPATH, '//*[@id="CorporativeEvents20201407"]/div[1]/div[1]/div/div[2]/div[1]/span[3]')
element.send_keys('010140000143')

Please help me!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瀞厅☆埖开 2025-01-24 03:16:10

您无法直接向该元素发送文本。
您应该单击该元素,这将打开另一个 input 元素,您可以在其中插入文本输入。
此外,您还必须在此处使用预期条件显式等待。
这有效:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://opi.dfo.kz/p/ru/archive-publication/corporative-events-2020-14-07"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="CorporativeEvents20201407"]/div[1]/div[1]/div/div[2]/div[1]/span[3]'))).click()
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@class='editor-text tip']"))).send_keys("010140000143")

'//*[@id="CorporativeEvents20201407"]/div[1]/div[1]/div/div[2]/div[1]/span[3]' XPath 定位器也可以而且应该得到改进。您可以使用 //div[@class='logic-group-condition' 和 .//span[@field-name='tbOpiActiveRevisions_flBin']] 代替。这个定位器更加可靠。所以你的代码将是:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://opi.dfo.kz/p/ru/archive-publication/corporative-events-2020-14-07"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@class='logic-group-condition' and .//span[@field-name='tbOpiActiveRevisions_flBin']]"))).click()
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@class='editor-text tip']"))).send_keys("010140000143")

这是应用我的代码后网页的屏幕截图:
输入图片此处描述

You can not send text directly to that element.
You should click on that element, this will open another input element where you will be able to insert your text input.
Also you have to use Expected Conditions explicit waits here.
This works:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://opi.dfo.kz/p/ru/archive-publication/corporative-events-2020-14-07"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="CorporativeEvents20201407"]/div[1]/div[1]/div/div[2]/div[1]/span[3]'))).click()
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@class='editor-text tip']"))).send_keys("010140000143")

The '//*[@id="CorporativeEvents20201407"]/div[1]/div[1]/div/div[2]/div[1]/span[3]' XPath locator can and should be improved as well. You can use //div[@class='logic-group-condition' and .//span[@field-name='tbOpiActiveRevisions_flBin']] Instead. This locator is much more reliable. So your code will be:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://opi.dfo.kz/p/ru/archive-publication/corporative-events-2020-14-07"
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@class='logic-group-condition' and .//span[@field-name='tbOpiActiveRevisions_flBin']]"))).click()
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@class='editor-text tip']"))).send_keys("010140000143")

This is the screen shot of the web page after applying my code:
enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文