Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 硒设置菜单_Javascript_Python_Selenium - Fatal编程技术网

Javascript 硒设置菜单

Javascript 硒设置菜单,javascript,python,selenium,Javascript,Python,Selenium,我正在尝试使用Selenium编写Python脚本以使用网页,但无法获取。单击()以选择可扩展列表。我已经能够登录,导航到正确的页面,但随后出现一个列表,我尝试的每个元素都失败了 我试图选择的div是一棵树。一个设置选项列表,你点击它,它会展开更多选项,你点击其中一个,它会打开一个论坛来填写和保存 这是列表的总体布局 <li category="category"> <a class="class"> <i class="set-

我正在尝试使用Selenium编写Python脚本以使用网页,但无法获取。单击()以选择可扩展列表。我已经能够登录,导航到正确的页面,但随后出现一个列表,我尝试的每个元素都失败了

我试图选择的div是一棵树。一个设置选项列表,你点击它,它会展开更多选项,你点击其中一个,它会打开一个论坛来填写和保存

这是列表的总体布局

<li category="category">
      <a class="class">
            <i class="set-menu-icon"></i>
            <span class="set-menu-label" t="Settings">sectionOfTheSettings</span>
       </a>
       <ul style="display: none;">

          <li class="set-item" filename="someFile">
              <i class="set-item-icon"></i>
              <span class="set-menu-label" t="subSectionOfSettings">TCP/IP</span>
          </li>
我尝试过按类查找元素、css选择器和xpath,但没有成功。 我已经尝试选择了各种元素。单击()一些元素将被识别,没有错误,但它们实际上什么都不会做。其他人会出错,说元素不存在


我可能只是误解了网页的工作原理,我对Javascript和Jquery没有很好的了解,而这两个方面是该页面非常依赖的。该页面由在我的本地网络上运行的IoT设备提供。

我能够通过使用Katalon IDE并查看它选择的XPath来解决这个问题。事实证明,我离这里不远,实际上已经工作过几次了。如果显示的设置窗体上没有任何更改,它将恢复到预览部分

解决方案,使用IDE并导出为Python。根据需要编辑脚本

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "generic IP"

driver = webdriver.Edge()
driver.get(url)
driver.find_element_by_id("login").clear()
driver.find_element_by_id("login").send_keys('gen')
driver.find_element_by_id("pswd").send_keys('generic')
driver.find_element_by_class_name("login-button").click()
#Change password prompt opens. Wait until visible and Close to bypass change
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.ID, "close")))
driver.find_element_by_id("close").click()
#Navigate to the settings page
driver.find_element_by_link_text("Setting").click()
driver.implicitly_wait(10) #wait for everything to load