单击内部元素::b

2024-06-16 08:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Selenium来单击a::before选择器中包含的元素,但每次尝试这样做时,Selenium都返回一个NoSuchElementException。看看一些相关的线程,这似乎是出于我不完全理解的原因而预期的行为(参见这里一些看似相关的答案:How to click on ::before elementhttps://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')

Tags: dividbydriverelementfind线程class