Selenium 仅在 Python 中找到某些元素
Selenium only finding certain elements in Python
我在 Python 中使用 Selenium 查找元素时遇到一些问题,它适用于我测试过的所有其他网站上的每个元素,但在游戏网站上它只能找到某些元素。
这是我使用的代码:
from selenium import webdriver
import time
driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.jklm.fun")
passSelf = input("Press enter when in game...")
time.sleep(1)
syllable = driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div[2]/div").text
print(syllable)
根据 运行 代码,未找到元素 /html/body/div[2]/div[2]/div[2]/div[2]/div
。在图像中,您可以看到它试图找到的元素:
Element the code is trying to find
然而 运行 相同的代码,但用主游戏之外的东西替换 XPath(例如右上角的房间代码)它成功地找到了元素:
Output of the code being run on a different element
我尝试使用 class 名称、名称、选择器和 XPath 来查找原始元素,但没有成功,我认为影响它的唯一因素是:
- 元素周期性变化(不确定是否影响)
- 这些元素位于“Canvas 区域”,它以某种方式阻止了它。
我不确定这些事情是否重要,因为我是使用 selenium 的新手,我们将不胜感激。游戏所在的网站是https://www.jklm.fun/如果你想看看元素
您尝试访问的元素在 iframe 中。像这样先切换到框架
driver.switch_to_frame(driver.find_element_by_xpath("//div[@class='game']/iframe[contains(@src,'jklm.fun')]"))
driver.get("https://jklm.fun/JXUS")
WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, "//button[@class='styled']"))).click()
time.sleep(10)
driver.switch_to.frame(0)
while True:
Get_Text = driver.find_element_by_xpath("//div[@class='round']").text
print(Get_Text)
我在 Python 中使用 Selenium 查找元素时遇到一些问题,它适用于我测试过的所有其他网站上的每个元素,但在游戏网站上它只能找到某些元素。
这是我使用的代码:
from selenium import webdriver
import time
driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.jklm.fun")
passSelf = input("Press enter when in game...")
time.sleep(1)
syllable = driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div[2]/div").text
print(syllable)
根据 运行 代码,未找到元素 /html/body/div[2]/div[2]/div[2]/div[2]/div
。在图像中,您可以看到它试图找到的元素:
Element the code is trying to find
然而 运行 相同的代码,但用主游戏之外的东西替换 XPath(例如右上角的房间代码)它成功地找到了元素:
Output of the code being run on a different element
我尝试使用 class 名称、名称、选择器和 XPath 来查找原始元素,但没有成功,我认为影响它的唯一因素是:
- 元素周期性变化(不确定是否影响)
- 这些元素位于“Canvas 区域”,它以某种方式阻止了它。
我不确定这些事情是否重要,因为我是使用 selenium 的新手,我们将不胜感激。游戏所在的网站是https://www.jklm.fun/如果你想看看元素
您尝试访问的元素在 iframe 中。像这样先切换到框架
driver.switch_to_frame(driver.find_element_by_xpath("//div[@class='game']/iframe[contains(@src,'jklm.fun')]"))
driver.get("https://jklm.fun/JXUS")
WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, "//button[@class='styled']"))).click()
time.sleep(10)
driver.switch_to.frame(0)
while True:
Get_Text = driver.find_element_by_xpath("//div[@class='round']").text
print(Get_Text)