【问题标题】:Selenium - Select fields won't save via Remote WebdriveSelenium - 选择字段不会通过远程 Webdrive 保存
【发布时间】:2017-07-22 06:10:18
【问题描述】:

我必须测试一个用 React 编写的 Web 应用程序。我想从选择字段中选择选项:

HTML
<select id="martial_status" class="form-control" name="martial_status">
<option value="" hidden="">---</option>
<option value="1">wolny</option>
</select>

我正在尝试使用两种方法将此字段设置为“value”=1:

martial_status = Select(driver.find_element(By.ID, "martial_status")
martial_status.select_by_value('1')

el = driver.find_element_by_id("martial_status")
        for option in el.find_elements_by_tag_name('option'):
            if option.text == 'wolny':
                option.click()
                break

它们都只能与本地 webdriver 一起正常工作:

cls.driver = webdriver.Firefox()
cls.driver.implicitly_wait(20)

当我使用远程 Webdriver 时,选择的值不会被保存:

cls.driver = webdriver.Remote(
             command_executor='http://xx.xx.xx.xx:5555/wd/hub',
             desired_capabilities=DesiredCapabilities.FIREFOX)

测试未检索任何错误。从正在执行远程测试的远程服务器上启动的 Selenium_standalone_server 控制台,我假设找到了选择:

14:31:16.993 INFO - Executing: [find element: By.id: martial_status])
14:31:17.002 INFO - Done: [find element: By.id: martial_status]
14:31:17.063 INFO - Executing: [tag name: 15 [[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status]])
14:31:17.070 INFO - Done: [tag name: 15 [[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status]]
14:31:17.130 INFO - Executing: [get element attribute: 15 [[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status], multiple])
14:31:17.143 INFO - Done: [get element attribute: 15 [[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status], multiple]
14:31:17.204 INFO - Executing: [find child elements: 15 [[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status], By.cssSelector: option[value ="1"]])
14:31:17.212 INFO - Done: [find child elements: 15 [[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status], By.cssSelector: option[value ="1"]]
14:31:17.272 INFO - Executing: [is selected: 16 [[[[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status]] -> css selector: option[value ="1"]]])
14:31:17.278 INFO - Done: [is selected: 16 [[[[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status]] -> css selector: option[value ="1"]]]
14:31:17.337 INFO - Executing: [click: 16 [[[[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status]] -> css selector: option[value ="1"]]])
14:31:17.376 INFO - Done: [click: 16 [[[[FirefoxDriver: Firefox on LINUX (661c3804-f7e8-470a-b516-95ad449efb8b)] -> id: martial_status]] -> css selector: option[value ="1"]]]

但是保存并重新输入后,我看到选择没有设置。 相同的代码,本地 webdriver 和选定的字段都可以。 任何想法谁来解决这个问题? :)

【问题讨论】:

  • 至少在您的示例中您缺少右括号。
  • id 是education,而不是martial_status
  • 对不起,问题不完整,missclick,我早点发:(
  • @JeremyFarrell 我将错误的选择复制到示例中

标签: python google-chrome selenium firefox


【解决方案1】:

您可以使用相对 XPath 来选择元素。 即(//option[@value='1'])

参考https://www.guru99.com/xpath-selenium.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2019-05-28
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多