单击::

时间:2017-10-20 05:13:42

标签: python selenium

我正在尝试使用Selenium来单击:: before选择器中包含的元素,但每次我尝试这样做时,Selenium都会返回NoSuchElementException。看一些相关的线程,似乎这是预期的行为,原因我并不完全理解(参见一些看似相关的答案:How to click on ::before element; https://groups.google.com/forum/#!topic/selenium-users/ZUi9cenA13o)。请注意,此部分在iframe中,当人们遇到此类问题时,这似乎是另一个常见问题。

以下是我正在尝试使用的页面的HTML相关部分:

<div class="container">
    ::before
  <div id="ctl00_divPageContent" class="page-content center-block">
    <div class="col-xs-12 main remove-padding-sm add-padding-quater-sm-remove-padding-xs add-padding-quater-xs">
      <div id="ctl00_ContentPlaceHolder2_upView">
        <div class="col-xs-12 remove-padding-xs">
          <div class="pull-right">
            <div class="modal-dropdown pull-right">
              <a data-toggle="dropdown" tabindex="1">
                <i class="fa fa-ellipsis-v">
                    ::before
                </i>
              </a>
              <div class="dropdown-menu" role="menu">
                <a id="ctl00_ContentPlaceHolder2_lbnSelected" href="javascript:__doPostBack('ctl00$ContentPlaceHolder2$lbnSelected','')">Select</a>
                <a id="ctl00_ContentPlaceHolder2_lbnPdf" href="javascript:__doPostBack('ctl00$ContentPlaceHolder2$lbnPdf','')">
                  <em class="txt-underline">Print PDF</em>
                </a>

我正在尝试点击下拉菜单中的第二个javascript链接(即带有id="ctl00_ContentPlaceHolder2_lbnPdf"的那个),但我无法获得任何工作。在上面列出的第二个线程中,其他人似乎表明这需要执行一些JavaScript,但是我无法理解为了成功执行此操作而实际需要运行的JavaScript,或者如何在Python中执行它。

非常感谢任何帮助!

编辑:这是我尝试过的一些代码:

# set up driver
driver = webdriver.Chrome()
... # omitting code here for navigating to the right page, etc.
# each of these returns a NoSuchElementException
driver.find_elements_by_xpath('//*[@id="ctl00_ContentPlaceHolder2_lbnPdf"]')
driver.find_element_by_css_selector('#ctl00_ContentPlaceHolder2_lbnPdf')
driver.find_element_by_link_text('Print PDF Resume')

请注意,我很确定我已导航到正确的页面,因为我能够使用其xpath在我粘贴的块的顶部找到div:

# does not return a NoSuchElementException
driver.find_element_by_xpath('//*[@id="aspnetForm"]/div[2]/div[1]/div')

0 个答案:

没有答案