私信  •  关注

supputuri

supputuri 最近创建的主题
supputuri 最近回复了
6 年前
回复了 supputuri 创建的主题 » 在Python中使用Selenium单击网页中的所有按钮

您可以使用循环遍历并单击按钮的数量。

number_of_buttons = 5
for x in range(number_of_buttons):
    button = browser.find_element_by_css_selector("li.clickable_area:nth-child(" + str(x+1) + ") > div:nth-child(3)")
    button.click()

如果你想点击所有 li(x) > div:nth-child(3) 那你可以用下面的。

number_li_elems=len(WebDriverWait(browser,30).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "li.clickable_area"))))
for x in range(number_li_elems):
    # you have to get the element by index every time, otherwise you will get StaleElement Exception
    button = browser.find_element_by_css_selector("li.clickable_area:nth-child(" + str(x+1) + ") > div:nth-child(3)")
    button.click()

相反,你加载所需的cookies/扩展作为你的chrome选项的一部分,另一个选项是使用chrome配置文件。检查我的答案 this post

有关配置文件及其工作方式的更多信息,请参阅 here

下面是在隐名模式下打开扩展的逻辑。

# driver.get("chrome://extensions/?id=extion_name_goes_here"); # <=== general snippet see below example
# driver.get("chrome://extensions/?id=jfpmbokkdeapjommajdfmmheiiakdlgo") 

# select allow in incognito mode checkbox
driver.execute_script("return document.querySelector('extensions-manager').shadowRoot.querySelector('#viewManager > extensions-detail-view.active').shadowRoot.querySelector('div#container.page-container > div.page-content > div#options-section extensions-toggle-row#allow-incognito').shadowRoot.querySelector('label#label input').click()");

请参阅我的答案 this post 有关上面使用的js的更多信息。

7 年前
回复了 supputuri 创建的主题 » 似乎pycharm不认识所有使用的库

此错误来自脚本中的代码行。

tday = datetime.datetime.today()  # <===== there is no today method `today` for datetime

在trackback中检查此错误消息 AttributeError: module 'datetime' has no attribute 'today'

6 年前
回复了 supputuri 创建的主题 » Selenium Python:无法清除chrome浏览器缓存

下面是javascript返回clearButton元素,然后使用python selenium单击的脚本。

clearButton = driver.execute_script("return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm')")
#click on the clear button now
clearButton.click()

检查我的答案 Here 更详细的解释。

6 年前
回复了 supputuri 创建的主题 » 窗口处理不在python selenium上更新

如果你看看 print(browser.window_handles) 只有一个列表项总是一样的。

['cdwindow-18d629a1bfc3391c5ae352f02768efa3']

指示链接正在同一窗口中加载/刷新数据的。所以,你不必切换到任何其他标签。

每当看到新窗口/选项卡打开时,您总是可以在对新窗口执行操作之前切换到新窗口。

切换到最新窗口:

driver.switch_to.window(driver.window_handles[-1])
7 年前
回复了 supputuri 创建的主题 » python和selenium:发生selenium异常时未执行代码

我会确保在driver.close()之前先切换到关闭窗口。

driver.switch_to.window(driver.window_handles[1]) 
driver.close() 
driver.switch_to.window(driver.window_handles[0])