【问题标题】:DOM not changing when navigating to a new page safari selenium python导航到新页面 safari selenium python 时 DOM 没有改变
【发布时间】:2021-04-12 12:34:13
【问题描述】:

我正在使用 Safari 网络驱动程序打开我网站的登录页面。我能够访问元素并成功登录。一旦登录页面,主页就会加载。但是,我无法找到或单击页面上的任何元素。 我已经通过 id、tag、class 和 xpath 尝试过。都无法返回任何元素。 调用失败并出现没有消息的 WebDriverException。 我已经使用 //* 获得了页面上的所有元素。当我打印类名时,这给了我一个元素列表,我可以看到它仍然包含登录页面中的元素。 看起来 DOM 没有刷新。我尝试使用 driver.refresh 自己刷新它并发送 command+r 键,但没有任何效果。 任何帮助都非常感谢 页面对象函数

    def get_study_cards(self) -> list[WebElement]:
        self.selenium_puppeteer.wait_for_element(By.CLASS_NAME, "study-card", 20)
        self.selenium_puppeteer.take_screenshot("{} {}".format(self._get_name(), "get study card"))
        study_list = self.selenium_puppeteer.driver.find_element_by_class_name("study-card")
        return study_list

登录测试功能:

    def test_login(self):
        self._set_up_test_reporter(
            self.test_config.test_login.test_title, get_practitest_id_from_config_test_id_field(
                self.test_config.test_login.practitest_instance_id,
                self.consts.web_driver_helper
            )
        )
        log_debug(self._get_name(), self.consts.test_config.global_level.starting_log
                  .format(self.current_test_reporter.test_name))

        self.biomarker_actions.navigate_to_biomarker_portal()
        self.biomarker_actions.log_in_from_login_page()
        studies_list = self.biomarker_actions.studies_page.get_study_cards()

页面html:

<div _ngcontent-c7="" class="study-card">
  <a _ngcontent-c7="" href="/studies/BP39295">
    <div _ngcontent-c7="" class="card">
      <div _ngcontent-c7="" class="card-image">
        <img _ngcontent-c7="" src="data:image/png;base64,i" style="background-color: rgb(192, 202, 51);">
        <!----><div _ngcontent-c7="" class="edit-study-layer">
          <button _ngcontent-c7="" class="material-icons x-small">edit</button>
        </div>
        <!----><div _ngcontent-c7="" class="del-study-layer">
          <button _ngcontent-c7="" class="material-icons x-small" tooltip="">delete</button>
        </div>
      </div>
      <div _ngcontent-c7="" class="card-content">
        <p _ngcontent-c7="" class="card-title" data-tooltip="SMART_PD_HV">
          SMART_PD_HV
        </p>
        <dl _ngcontent-c7="" class="details">
          <dt _ngcontent-c7="">Sites</dt>
          <dd _ngcontent-c7="">0</dd>
          <dt _ngcontent-c7="">Subjects</dt>
          <dd _ngcontent-c7="">0</dd>
          <dt _ngcontent-c7="">Last updated</dt>
          <!---->
          <!----><dd _ngcontent-c7="">-</dd>
        </dl>
      </div>
    </div>
  </a>
</div>

收到错误: selenium.common.exceptions.WebDriverException:消息:

我希望有一个类名为 study-card 的上述网络元素列表 这在 chrome、firefox 和 edge 上运行良好, 调试时,我在调用查找元素之前和之后放置了一个断点,但它永远不会到达调用查找元素之后的断点。 只是去下一个测试然后我看到上面的错误没有消息 我跟随了对 Webdriver 的调用

def execute(self, driver_command, params=None):

它在这里得到错误

 response = self.command_executor.execute(driver_command, params)

响应是 500 未知错误

【问题讨论】:

  • 您能否发布您的测试、网页和错误/预期结果的代码?
  • 添加html代码或网站链接
  • 已更新代码

标签: python selenium safari webdriver


【解决方案1】:

你试过了吗:-

driver.get(driver.current_url)

【讨论】:

  • driver.current_url 在登录 test.studydash.io/studies 后返回其应有的 URL
猜你喜欢
  • 1970-01-01
  • 2016-06-02
  • 2018-12-03
  • 2016-09-28
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 2014-07-07
  • 2021-11-15
相关资源
最近更新 更多