我有一个内部Web应用程序,它有一个模态对话框.不幸的是,我不能在这里发布实际的Web应用程序位置,但让我尽可能地描述它.
我可以点击固定次数(例如:如果我知道有两个页面我可以点击两次)但我不确定如何改变它以便无论我有多少页面它都会运行.我想要一个普遍的解决方案; 据推测,这会使用某种循环来检查按钮是否已启用.如果是,则单击它.如果它被禁用,则退出循环.
问题是:如何在Selenium中设置循环,重复单击按钮直到它被禁用?
这是我尝试过的代码:
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
# Create a new instance of the Firefox driver
driver = webdriver.Firefox()
driver.get("http://localhost/myapp")
try:
wait = WebDriverWait(driver, 100)
wait.until(EC.element_to_be_clickable((By.ID,'menuIntroBox_buttonNext')))
driver.find_element_by_id("menuIntroBox_buttonNext").click()
# Click through the introduction text... this is the problematic code.
# Here I tried to wait for the element to …Run Code Online (Sandbox Code Playgroud) 这是我的第一个问题的后续问题,我正在尝试抓取一个网站并点击Selenium next(直到它无法点击)并收集结果.
这是带有按钮的网站的html标签:
<div class="pager results-display">
<span class="action-btn prev inactive" data-page="1">Prev</span>
<span class="action-btn inactive" data-page="1">1</span> # Currently in page 1 thus inactive
<span class="action-btn" data-page="2">2</span>
<span class="action-btn" data-page="3">3</span>
<span class="action-btn" data-page="4">4</span>
<span class="action-btn" data-page="5">5</span>
<span class="action-btn" data-page="6">6</span>
<span class="action-btn" data-page="7">7</span>
<span class="action-btn" data-page="8">8</span>
<span class="action-btn" data-page="9">9</span>
<span class="action-btn" data-page="10">10</span>
<span class="action-btn" data-page="11">11</span>
<span class="action-btn" data-page="12">12</span>
<span class="action-btn" data-page="13">13</span>
<span class="action-btn" data-page="14">14</span>
<span class="action-btn next" data-page="2">Next</span>
</div>
<div class="no-results-display hidden" style="display: none;">
No companies matched your …Run Code Online (Sandbox Code Playgroud)