我将以下代码转到URL(www.example.com),然后单击链接(示例1)。 (这部分工作正常)
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.example.com")
link = driver.find_element_by_link_text('Example 1')
link.click()
现在,当我们点击'示例1'链接,它打开一个确认窗口,有2个按钮:'是我是该网站的授权用户'和'不,我是本网站的新访问者'
所以,我希望点击“是的,我是该网站的授权用户”#39;然后最后输入我的登录凭据。 我在上面的代码下面写了这两行,用于点击该按钮。但是这些都不起作用。
button = driver.find_element_by_name("'Yes I am authorized user to this site'")
button.click()
答案 0 :(得分:3)
如果是警报窗口,则需要使用警报命令。
#import Alert
from selenium.webdriver.common.alert import Alert
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.example.com")
link = driver.find_element_by_link_text('Example 1')
link.click()
Alert(driver).accept()
#to dismiss alert
#Alert(driver).dismiss()
我认为这会解决您的问题。
答案 1 :(得分:0)
试试这段代码,希望它能帮到你
from selenium import webdriver
import time
driver = webdriver.Chrome('path to chromedriver\chromedriver.exe')
driver.get('https://www.example.com')
driver.maximize_window()
link = driver.find_element_by_link_text('Example 1')
link.click()
handles =driver.window_handles # this will give window handles
driver.switch_to.window(handles[1])
button = driver.find_element_by_name("'Yes I am authorized user to this site'")
button.click()
答案 2 :(得分:0)
根据评论对话,我建议使用XPATH搜索(而不是Name或Id)并等待元素可点击或加载。当网页驱动或网页抓取时,页面可能会有意或无意地加载速度,如果您有暂停或等待硬编码或不存在,这可能会导致问题。这段代码应该允许您使用Selenium和Chromedriver搜索Google(如果您愿意,可以修改驱动程序功能以使用Firefox或其他内容):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import ElementNotVisibleException
from selenium.webdriver.chrome.options import Options
from time import sleep
def init_driver(drvr_path):
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
driver = webdriver.Chrome(drvr_path+'chromedriver.exe',chrome_options=chrome_options)
driver.wait = WebDriverWait(driver, 5)
return driver
def lookup(query, driver=None, drvr_path=''):
driver = None
if driver is None:
driver = init_driver(drvr_path)
driver.implicitly_wait(45) # Allow up to 45 Seconds for page to load
driver.get("http://www.google.com")
try:
box = driver.wait.until(EC.presence_of_element_located((By.XPATH, """//*[@id="lst-ib"]""")))
box.send_keys(query)
sleep(3) # Let you see the window open
button = driver.wait.until(EC.element_to_be_clickable((By.XPATH,"""//*[@id="sblsbb"]/button""")))
try:
button.click()
except ElementNotVisibleException, s:
print "Error Handled: "+str(s)
button = driver.wait.until(EC.element_to_be_clickable((By.XPATH,"""//*[@id="sblsbb"]/button""")))
try:
button.click()
except:
print "Could not search Google..."
return
resp=driver.page_source.encode('utf-8')
with open(query+'.html','wb') as f:
f.write(resp)
print 'Wrote the File...'
except:
print("Box or Button not found in google.com")
driver.quit()
例如,如果您的Chromedriver.exe文件位于默认的Python路径中,您可以执行以下操作:lookup('Selenium Python XPATH Examples')
并且应该下载Google搜索结果的HTML文件。如果您已经初始化了一个驱动程序,您当然可以将其传递给它。
希望这有帮助