Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Python 需要单击下拉菜单中的文本以更改下拉菜单中的默认选项_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python 需要单击下拉菜单中的文本以更改下拉菜单中的默认选项

Python 需要单击下拉菜单中的文本以更改下拉菜单中的默认选项,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我对python和selenium webdriver还不熟悉。html代码的示例结构是 ::之前 在任何情况下,您确定这是一个下拉菜单吗? 通常,下拉菜单html如下所示: <select name="cars"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="fiat"&

我对python和selenium webdriver还不熟悉。html代码的示例结构是

  • ::之前
      在任何情况下,您确定这是一个下拉菜单吗? 通常,下拉菜单html如下所示:

      <select name="cars">
          <option value="volvo">Volvo</option>
          <option value="saab">Saab</option>
          <option value="fiat">Fiat</option>
          <option value="audi">Audi</option>
      </select>
      
      
      沃尔沃汽车
      萨博
      法令
      奥迪
      
      您的示例看起来更像一个列表项:

      此下拉列表不是使用选择和选项标签创建的。因此,从selenium中选择类将不起作用

      解决办法是:

    • 使用selenium单击下拉列表
    • 将每个元素存储在列表中,并逐个将其与所需文本匹配。如果匹配发生,只需点击它 我提供的代码为2,你可以写你自己的代码为第一部分

      drop_down = self.driver.find_elements_by_css_selector("li.env-data a")
      for values in  drop_down:
        if values.text==ENVNAME2:
          values.click()
      

      在过去,我使用javascript解决了很多问题。你可以试试看这是否有效

       driver.execute_script("document.getElementById('configured-env')='ENVNAME2'")
      

      不,这行不通。作为OP共享的HTML,下拉列表不是使用select和options标记生成的。此代码将导致
      类型错误:“WebElement”对象不可编辑
      @Andersson:更改为
      查找元素
      。“无论如何,谢谢你。”克鲁斯潘迪和安德森非常感谢你的帮助。代码对我有用。env_dropdown=self.driver.find_element_by_xpath('//li[@class=“dropdown env dropdown”]”)ActionChains(self.driver.move_to_element(env_dropdown).perform()time.sleep(2)drop_down=self.driver.find_元素由css_选择器(“li.env-data a”)为下拉列表中的值查找_元素:if values.text==“ENVNAME2”:value.click()
       driver.execute_script("document.getElementById('configured-env')='ENVNAME2'")