javascript - 访问从 javascript 函数 webdriver 动态生成的 href

标签 javascript jquery python selenium selenium-webdriver

我想访问一个棘手的 href。我无法硬编码这个 URL,因为它是由页面生成的,我将使用这个程序几年:

基类 https://gist.github.com/codyc4321/724f05aca8f6775e2fc1 (感兴趣的access_link)

class HCCDriver(FirefoxDriver):

    def __init__(self, username="cchilders", password="mypw"):
        super(HCCDriver, self).__init__(username=username, password=password, start_url="https://hccadvisor.hccfl.edu")
        self.username  = username
        self.password  = password

    def login_testout(self):
        driver = ChromeDriver()
        driver.get("http://www.testout.com/")
        login_a_tag = driver.access_link("hLogin")

我想要 StartLogin() 生成的内容:

<a id="hLogin" class="blue-button" href="javascript:StartLogin();" style="margin: 0 0 0 8px; border-right: 0; float: none; vertical-align: middle">Login</a>

错误:

In [3]: h.login_testout()
---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)
<ipython-input-3-3c353756ce70> in <module>()
----> 1 h.login_testout()

/home/cchilders/scripts/my_scripting_library/webdriver/specific.py in login_testout(self)
    119         driver = ChromeDriver()
    120         driver.get("http://www.testout.com/")
--> 121         login_a_tag = driver.access_link("hLogin")
    122 
    123     def access_class_search_screen_hcc(self, category="CTS", driver=None):

/home/cchilders/scripts/my_scripting_library/webdriver/general.pyc in access_link(self, search_text)
     89         element = self.locate_element(search_text)
     90         link  = element.get_attribute('href')
---> 91         self.get(link)
     92 
     93     def submit_form(self, search_text=None):

/home/cchilders/scripts/my_scripting_library/webdriver/general.pyc in get(self, url)
     64 
     65     def get(self, url=None):
---> 66         self.driver.get(url)
     67 
     68     @property

/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.pyc in get(self, url)
    211         Loads a web page in the current browser session.
    212         """
--> 213         self.execute(Command.GET, {'url': url})
    214 
    215     @property

/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.pyc in execute(self, driver_command, params)
    199         response = self.command_executor.execute(driver_command, params)
    200         if response:
--> 201             self.error_handler.check_response(response)
    202             response['value'] = self._unwrap_value(
    203                 response.get('value', None))

/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.pyc in check_response(self, response)
    192         elif exception_class == UnexpectedAlertPresentException and 'alert' in value:
    193             raise exception_class(message, screen, stacktrace, value['alert'].get('text'))
--> 194         raise exception_class(message, screen, stacktrace)
    195 
    196     def _value_or_default(self, obj, key, default):

WebDriverException: Message: unknown error: unsupported protocol
  (Session info: chrome=48.0.2564.109)
  (Driver info: chromedriver=2.9.248304,platform=Linux 3.19.0-15-generic x86_64)

最糟糕的是,代码的工作方式就像我使用 FirefoxDriver 一样,出于显而易见的原因,我更喜欢使用 chrome 来做作业。 chrome 可以访问这个链接吗?谢谢

最佳答案

您还可以单击链接并获取.current_url :

element = self.locate_element(search_text)
element.click()

link = self.driver.current_url

关于javascript - 访问从 javascript 函数 webdriver 动态生成的 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497324/

相关文章:

javascript - 通过 iframe 进行响应式设计

javascript - 如何计算一个函数被唯一调用了多少次

javascript - Jquery 分配 data-id,第一个值未定义

javascript - 在 JavaScript 中将特殊字符转换为 HTML

javascript - 使用 PHP mcrypt 加密后使用 Javascript CryptoJS 解密 AES

javascript - 使用按钮在 Jquery Datepicker 上设置日期

javascript - 随机选择剩余的 div Javascript

python - 通过HTTP的Python网络摄像头图像服务器未显示图像

python - 线性回归 - 图像

python - 如何在 tensorflow 中将序列映射到序列?