<a name="DERIVED_SSS_SCL_SSS_ENRL_CART$276$" id="DERIVED_SSS_SCL_SSS_ENRL_CART$276$" ptlinktgt="pt_peoplecode" tabindex="126" href="javascript:submitAction_win0(document.win0,'DERIVED_SSS_SCL_SSS_ENRL_CART$276$');" class="SSSHYPERLINKBOLDSMALL">Enrollment Shopping Cart</a>
是我要找的元素。
背景:我正在尝试自动化班级注册。问题中的页面必须通过某些安全措施访问,并且肯定不是典型的web页面。
首先,我试了一下:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
username = input("Username: ")
password = input("Password: ")
username_box = driver.find_element_by_name("j_username")
username_box.send_keys(username)
password_box = driver.find_element_by_name("j_password")
password_box.send_keys(password)
password_box.send_keys(Keys.RETURN) # Now, we are at the page in question after signing on.
我试过这个:
to_shopping_cart = driver.find_element_by_link_text("Enrollment Shopping Cart")
使用find_element_by_link_text、find_element_by_partial_link_text、find_element_by_id、find_element_by_name以及此处文档(https://selenium-python.readthedocs.org/api.html#selenium.webdriver.remote.webdriver.webdriver.find_element_by_link_text)中列出的一些其他选项。这些都抛出了“没有这样的元素”。
接下来,我尝试使用WebDriverWait。这不断抛出“超时异常”。
目前的理论:
1它与受保护的登录有关。这是一个非常奇怪的网站,一点也不直观,一吨吨的元素在彼此之间。
2它与它周围的其他元素有关。如果需要的话,我一定会上传这些,这只是一个巨大的html块,所以我想让问题尽可能的简洁。
3我想过使用driver.get()和href操作,但这只是重新加载web页面。所以那也不管用。
通过切换到正确的iFrame,使用:
proper_frame_element = driver.find_element_by_name('TargetContent')
driver.switch_to_frame(proper_frame_element)
您是否尝试过通过元素的XPath
捕获这些元素?Xpath对我来说似乎通常工作得很好。
为了方便地找到xpath而不是自己输入它,您可以通过Chrome访问网站,右键单击您想要xpath的元素,选择inspect element,就会弹出页面html的侧边栏。
在侧边栏中,应该有一条用灰色突出显示的线。这是html中指向element的行,如果您将鼠标放在该行上,您应该会看到您的element被高亮显示。右键单击该行并选择copy xpath,您就应该拥有您的xpath了。在代码中输入以下内容:
driver.find_element_by_xpath("xpath_of_element_you_want").sendkeys("your_username")
请确保xpath包含引号(字符串),并且要发送的用户名和密码键也是字符串。
根据注释中给出的信息,所需的元素在iframe中。这意味着您需要在进行搜索之前切换到iframe:
driver.switch_to.frame("frame name or id")
to_shopping_cart = driver.find_element_by_link_text("Enrollment Shopping Cart")
然后,如果需要切换到默认内容,请使用:
driver.switch_to.default_content()
问题内容: 我使用上面的python代码来练习一些基本的Selenium操作。我找不到任何元素,无论是名称还是ID。不管我尝试什么,我总是会遇到相同的错误,这表明我要查找的元素不存在。(想法是按一下其中一个按钮…) 这是网站html代码的一部分: 这是所说的网站(链接断开) 任何帮助将不胜感激。 顺便说一句,这是我尝试运行的第一个使用Selenium的程序,是否有可能需要更改某些设置或需要安装其他
问题内容: 我正在尝试选择一个包含锚点的元素,但文本被埋在div内的一个段落中。这是我正在使用的HTML: 我用来尝试捕获的代码针对的是“ Smoke Sequential”文本,其内容为: 变量“服务”中包含“烟雾顺序”的位置。运行它时,出现以下错误: 任何帮助将不胜感激。 问题答案: 问题可能出在html的其余部分,您没有发布的部分。 在此示例中(我刚刚关闭了打开的标签): 我可以轻松找到该元
我试图自动登录到网站https://opensource-demo.orangehrmlive.com/web/index.php/auth/login使用硒通过它给出了一个错误 selenium.common.exceptions.NoSuchElementException: 消息: no suchElement: 无法找到元素: {“method”:“css selector”,“selec
问题内容: 我正在使用Selenium WebDriver,并编写了一个小的代码来查找和元素(即按钮)并单击它。这是按钮的HTML代码: 这是测试用例的C#代码: 我也尝试使用XPath: 我找到了一个解决方案,说您一定没有实现“等待”。页面不等待完全加载并尝试查找元素。因此,我添加了等待命令,但没有发生任何有用的事情。仍然出现相同的错误: 问题答案: 由于您的元素位于IFrame中,因此您需要使
问题内容: 我正在尝试通过angularjs在html中查找元素。 这是html: 我试图通过类名多文件来获取按钮元素,然后我尝试 但是它不起作用,并且尝试过,但仅对标签起作用。 在angularjs中,有没有可以通过ID或类名获取元素的函数? 问题答案: 是DOM文档上的函数。它既不是jQuery也不是jqLite函数。 使用时不要在类名前添加句号: 将其包装在jqLite中(如果在An
我使用selenium IDE 1.9.0记录测试。请告诉我什么地方没有错,以及如何解决问题。 以下是我记录测试的步骤。1.我使用用户名和密码登录网站。2.我导航到搜索成员页面,输入成员的姓名,单击名称链接。系统将引导我进入成员配置文件页面。 脚本停在这一行: 我第一次玩脚本时,它运行没有任何错误。在运行该脚本8小时后,它提示我以下错误: 我使用调试函数来查看出了什么问题。以下是调试窗格中显示的消