【问题标题】:Can't access some content on page using selenium and python无法使用 selenium 和 python 访问页面上的某些内容
【发布时间】:2017-11-08 23:33:46
【问题描述】:

我在 python 脚本中使用 selenium 登录到一个网站,在那里我可以获得一个授权密钥来访问他们的 API。我能够登录并导航到提供授权密钥的页面,我正在使用 chrome 驱动程序进行测试,所以我可以看到发生了什么。当我到达显示密钥的最后一页时,我找不到访问它的方法。我在页面源代码中看不到它,当我尝试通过页面元素外部 html 访问时,它不会打印页面上显示的值。这是我在浏览器中看到的屏幕截图(我有兴趣访问响应正文中显示的内容):

这是我用来尝试访问内容的代码 sn-p:

auth_key = WebDriverWait(sel_browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="responseBodyContent"]')))
print auth_key.get_attribute("outerHTML")

这就是 print 语句返回的内容:

<pre id="responseBodyContent"></pre>

我也试过了:

print auth_key.text

什么都不返回。有没有办法从页面中提取这个密钥?

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    看起来您需要自定义等待来等待元素,然后等待文本。
    首先添加一个类,找到元素,然后获取元素的innerHTML。最后,测量字符串的长度。
    请参阅下面的示例。

    class element_text_not_empty(object):
        def __init__(self, locator):
            self.locator = locator
    
        def __call__(self, driver):
            try:
                element = driver.find_element(*self.locator)
                if(len(element.get_attribute('innerHTML').strip())>0):
                    return element.get_attribute('innerHTML')
                else:
                    return False
            except Exception as ex:
                print("Error while waiting: " + str(ex))
                return False
    
    driver = webdriver.Chrome(chrome_path)
    ...
    ...
    try:
        print("Start wait")
        result = WebDriverWait(driver, 20).until(element_text_not_empty((By.XPATH, '//*[@id="responseBodyContent"]')))
        print(result)
    except Exception as ex:
        print("Error: " + str(ex))
    

    【讨论】:

      【解决方案2】:

      因为 responseBodyContent 的属性值是 json 格式,所以试试这个

      authkey_text = json.loads(auth_key.get_attribute) 打印 str(authkey_text)

      【讨论】:

        猜你喜欢
        • 2020-04-14
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多