python - Selenium python 在选项卡之间切换的问题
问题描述
这是我的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import pandas as pd
import time
N=22
while N<23:
driver = webdriver.Safari()
driver.get("https://www.totalcorner.com/league/view/1/page:22")
driver.maximize_window()
odds = {"Name":[],
"Over":[],
"Under":[]
}
done="No"
n=0
while done == "No":
n += 1
try:
check = driver.find_element_by_xpath("//tbody/tr[{}]".format(n))
except:
print("error")
done = "Yes"
break
check_if_date = driver.find_element_by_xpath("//tbody/tr[{}]/td[1]".format(n))
check_if_date = check_if_date.text
if '201' not in check_if_date:
button_odds = driver.find_element_by_xpath("//tbody/tr[{}]/td[15]/a[1]/button".format(n))
#open the new tab
button_odds.click()
time.sleep(5)
#here is the problem
driver.switch_to.window(driver.window_handles[-1])
print("switched")
time.sleep(5)
odds_name = driver.find_element_by_xpath("//body/div[2]/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/table[3]/tbody[1]/tr[2]/td[1]")
odds_over = driver.find_element_by_xpath("//body/div[2]/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/table[3]/tbody[1]/tr[2]/td[2]")
odds_under = driver.find_element_by_xpath("//body/div[2]/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/table[3]/tbody[1]/tr[2]/td[3]")
name = odds_name.text
name = name.split('(')[1]
name = name.split(')')[0]
over = odds_over.text
over = over.split("@")[1]
under = odds_under.text
under = under.split("@")[1]
odds["Name"].append(name)
odds["Over"].append(over)
odds["Under"].append(under)
driver.close()
driver.switch_to.window(driver.window_handles[0])
N += 1
我遇到的第一个问题是,当打开新标签时,硒仍在第一个标签上工作。为了解决这个问题,我使用了
driver.switch_to.window(driver.window_handles[-1])
但是,这也不起作用。问题是,有时,selenium 似乎是随机的,第一次不会切换标签。
解决方案
推荐阅读
- c# - 反序列化对象忽略某些节点
- java - 如何在Java中使用嵌套for循环在每个字符后输出一个连字符
- r - R:循环需要较长的运行时间,建议更好的结构
- html - 如何获取 HTML 文档的根样式声明?
- focus - Web 可访问性 - 焦点项目
- r - 创建一个堆叠分组的条形图,每个条形图具有不同的类别?
- html - 如何将 div 中的图像居中(垂直和水平)在另一个 div 中居中(水平)
- .net - HttpClient.PostAsync() 请求未到达目的地
- spring-security - 使用另一个进行身份验证的应用程序 - 无论如何要规避使用他们的登录页面?
- python - Python Splinter 问题 UnboundLocalError:分配前引用了局部变量“e”