Python 硒罐';有文本时无法找到文本

Python 硒罐';有文本时无法找到文本,python,selenium,pyautogui,Python,Selenium,Pyautogui,erorr位于x=和**y=** 这也是html的东西 from selenium import webdriver import pyautogui as pay import time PATH = r"C:\Users\noah4273\Downloads\Python\chromedriver.exe" driver = webdriver.Chrome(PATH) driver.get("https://emat4.dk/menu.aspx"

erorr位于x=和**y=**

这也是html的东西

from selenium import webdriver
import pyautogui as pay
import time

PATH = r"C:\Users\noah4273\Downloads\Python\chromedriver.exe"
driver = webdriver.Chrome(PATH)


driver.get("https://emat4.dk/menu.aspx")
driver.find_element_by_id("ctl00_ImageButton_UNILogin").click()
time.sleep(1)
pay.write("noah4273")
pay.press("Enter")
time.sleep(1)
pay.write("hejmeddig")
pay.press("Enter")
time.sleep(3)
driver.find_element_by_id("ctl00_ImageButton_Tabeltræning").click()
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ImageButton_StartTabel").click()
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ImageButton_Let").click()
driver.find_element_by_class_name("nrknap").click()
x = driver.find_element_by_id("Label_Spg").text()[0]
y = driver.find_element_by_id("Label_Spg").text()[4]

idk = int(x) * int(y)
pay.write(idk)
pay.press("Enter")
10•4

驱动程序。通过id(“Label\u Spg”)查找元素。text()
是一个字符串(而不是数组),因此附加
[0]
或其他内容没有意义。我想你是在寻找:

<label id="Label_Spg" style="font-size: 48pt; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; user-select: none;">10 • 4</label>
我对你的目标不正确。对于您当前的错误,
driver.find\u element\u by\u id(“ctl00\u ImageButton\u UNILogin”)。click()
未找到任何元素。我怀疑在尝试与元素交互之前需要等待该元素

x = driver.find_elements_by_id("Label_Spg")[0].text
y = driver.find_elements_by_id("Label_Spg")[4].text

driver.find\u element\u by\u id(“Label\u Spg”)。text()
是一个字符串(而不是数组),因此附加
[0]
或其他内容是没有意义的。我想你是在寻找:

<label id="Label_Spg" style="font-size: 48pt; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; user-select: none;">10 • 4</label>
我对你的目标不正确。对于您当前的错误,
driver.find\u element\u by\u id(“ctl00\u ImageButton\u UNILogin”)。click()
未找到任何元素。我怀疑在尝试与元素交互之前需要等待该元素

x = driver.find_elements_by_id("Label_Spg")[0].text
y = driver.find_elements_by_id("Label_Spg")[4].text

text
是节点的字符串属性,因此您只需要
text
而不是
text()
text
是节点的字符串属性,因此您只需要
text
而不是
text()
操作获取的文本的方式看起来很混乱。 试着这样做:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui as pay
import time

PATH = r"C:\Users\noah4273\Downloads\Python\chromedriver.exe"
driver = webdriver.Chrome(PATH)


element = driver.get("https://emat4.dk/menu.aspx")
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.ID, "ctl00_ImageButton_UNILogin")))

element.click();
如果需要操纵获得的字符串以剪切所需的数字,请执行此操作。随后将这些值转换为浮点或整数


-编辑:补充我的答案,因为id是相同的(在您显示的代码中),只创建一个变量来存储此文本更为正确,然后执行字符串切片并分离所需的数字(将其转换为int或float)。

处理获得的文本的方式看起来很混乱。 试着这样做:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui as pay
import time

PATH = r"C:\Users\noah4273\Downloads\Python\chromedriver.exe"
driver = webdriver.Chrome(PATH)


element = driver.get("https://emat4.dk/menu.aspx")
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.ID, "ctl00_ImageButton_UNILogin")))

element.click();
如果需要操纵获得的字符串以剪切所需的数字,请执行此操作。随后将这些值转换为浮点或整数


-编辑:补充我的答案,因为id是相同的(在你展示的代码中),只创建一个变量来存储文本会更正确,然后执行字符串切片并分离所需的数字(将它们转换为int或float)。

现在我明白你想要什么了

x = driver.find_element_by_id("Label_Spg")
text_fromX = x.text
y = driver.find_element_by_id("Label_Spg")
text_fromY = y.text
说明:
driver.find\u element\u by\u id(“Label\u Spg”)
返回一个web元素 在其上应用
.text
,将检索该web元素文本。这是一根线。

现在,获取字符串的第一个和最后一个字符已完成,如图所示

现在我了解您想要什么了

x = driver.find_element_by_id("Label_Spg")
text_fromX = x.text
y = driver.find_element_by_id("Label_Spg")
text_fromY = y.text
说明:
driver.find\u element\u by\u id(“Label\u Spg”)
返回一个web元素 在其上应用
.text
,将检索该web元素文本。这是一根线。

现在,获取字符串的第一个和最后一个字符的操作如下所示

新错误:文件“c:\Users\noah4273\Downloads\Python\app.py”,第22行,在x=driver.find_element_by_id(“Label_Spg”)[0]。text()TypeError:“WebElement”对象不可订阅您需要将其调整为
driver.find_elements_by_id()
--注意find_elements结尾的
s
。新错误:文件“c:\Users\noah4273\Downloads\Python\app.py”,第23行,在y=driver中。按id(“Label_Spg”)[4查找_elements]。文本索引器:列表索引超出范围这不意味着索引不存在吗?所以它找不到任何文本是的。发生这种情况的原因是页面上只有一个元素具有
id=“Label\u Spg”
。该元素的文本被传递到
x
。您是正确的,索引不存在,因为该选择器只匹配页面上的一个元素。如果你能告诉我你想用
y=driver获取哪个元素。通过id(“Label\u Spg”).text()查找元素,我想我们已经接近工作状态了。新错误:文件“c:\Users\noah4273\Downloads\Python\app.py”,第22行,在x=driver中。通过id(“Label\u Spg”)查找元素[0]。text()TypeError:“WebElement”对象不可订阅您需要将其调整为
驱动程序。通过\u id()查找\u元素。
--注意查找元素末尾的
s
。新错误:文件“c:\Users\noah4273\Downloads\Python\app.py”,第23行,y=driver。通过\u id(“Label\u Spg”)查找\u元素[4].text Indexer错误:列表索引超出范围这不意味着索引不存在吗?所以它找不到任何文本是的。发生这种情况的原因是页面上只有一个元素具有
id=“Label\u Spg”
。该元素的文本被传递到
x
。您是正确的,索引不存在,因为该选择器只匹配页面上的一个元素。如果你能告诉我你想用
y=driver.find\u element\u by\u id(“Label\u Spg”).text()[4]
,我想我们就快开始工作了。
text
是一个属性,而不是一个函数。你能共享一个页面链接吗?或者至少整个HTML代码10•4是否只有一个元素
id=“Label\u Spg”
text
是属性而不是函数。您可以共享页面链接吗?或者至少整个HTML代码10•4是否只有一个元素
id=“Label\u Spg”
?新错误:文件“c:\Users\noah4273\Downloads\Python\app.py”,第22行,在x=driver中。按id(“Label\u Spg”)[0]查找元素。text()TypeError:“WebElement”对象不是subscriptableOk,然后删除
[0]
find\u element\u by\u id
返回标量。(另外,您的错误消息说您仍然有带括号的
text()
)我已更改了文本(),我只是将键入的消息放在没有更改的地方。新错误:文件“c:\Users\noah4273\Downloads\Python\app.py”,第22行,在x=driver中。按id(“Label\u Spg”)[0]查找元素TypeError:“WebElement”对象不是subscriptableOk,请删除
[0]
find\u element\u by\u id
返回标量。(此外,您的错误消息显示您仍然有
text()