【问题标题】:Could not locate element with visible text Selenium web automation无法找到带有可见文本的元素 Selenium web 自动化
【发布时间】:2022-01-17 08:37:30
【问题描述】:

我正在使用硒。我想自动化一个网络表单。有两个下拉菜单,我可以自动化第一个但我不能自动化第二个。第一个用于选择州,第二个用于选区。我已经尝试了 selenium select 提供的所有三种方法。但它总是给我这个错误:Could not locate element with visible text: RAJNANDGAON

代码如下:

from lib2to3.pgen2 import driver
from sre_parse import State
from tkinter.tix import Select
from selenium import webdriver

from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

import time

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)


driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), chrome_options=chrome_options)

driver.get("https://ssg2021.in/citizenfeedback")

time.sleep(5)
# selcting states
state_select = driver.find_element(By.XPATH,'//*[@id="State"]')
drp1 = Select(state_select)

drp1.select_by_visible_text('Chhattisgarh')


# selecting district
district_select = driver.find_element(By.XPATH,'//*[@id="District"]')
drp2 = Select(district_select)

drp2.select_by_visible_text('RAJNANDGAON')



【问题讨论】:

  • 查看站点,也许您必须在填充其他下拉列表之前正确选择元素。首先尝试在非无头浏览器中执行此操作,或使用 screenshot() 方法查看 rajnandgaon 是否真的可见
  • 另外,我注意到您导入了两次 select,一次来自 tkinter,一次来自 selenium,尝试来自 selenium 的一次似乎对我来说很好,尝试删除 tkinter 选择行或导入它作为别的东西

标签: python selenium selenium-webdriver webautomation


【解决方案1】:

您错过了选择项目之间的延迟。
选择状态后,第二个下拉列表菜单需要一些时间来填充它的列表。
所以最简单的解决方案是在此处添加一些延迟,如下所示:

from sre_parse import State
from tkinter.tix import Select
from selenium import webdriver

from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

import time

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)


driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), chrome_options=chrome_options)

driver.get("https://ssg2021.in/citizenfeedback")

time.sleep(5)
# selcting states
state_select = driver.find_element(By.XPATH,'//*[@id="State"]')
drp1 = Select(state_select)

drp1.select_by_visible_text('Chhattisgarh')

time.sleep(3)


# selecting district
district_select = driver.find_element(By.XPATH,'//*[@id="District"]')
drp2 = Select(district_select)

drp2.select_by_visible_text('RAJNANDGAON')

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 2018-12-14
    • 1970-01-01
    • 2023-03-07
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2020-08-28
    相关资源
    最近更新 更多