我的测试用例发生了这种奇怪的事情,但是我不想修复它,而是想暂时“绕过”它。以下步骤允许我做到这一点:
1) 单击“后退”,将浏览器导航到后一页 2) 刷新页面 3) 正常继续
但是,在第二步我从 Firefox 收到一个确认模式框,询问我是否要重新发送数据,单击此按钮后,一切都会再次正常运行。
这个确认框破坏了我的代码,我找不到处理它的方法。
有没有 selenium webdriver api 可以实现这个功能?
干杯。
我希望实现
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//div[@id='timeLeft']"), "Time left: 7 seconds"));
Run Code Online (Sandbox Code Playgroud)
C# 中的函数,等待文本出现。然而,它textToBePresentInElementLocated()仅在 java 中可用。在 C# 中是否有一种简单的方法来实现此目的,等待文本出现在页面上?
我的问题如下。
我正在尝试自动化我工作的网站的部分测试套件,虽然大部分进展顺利,但开发人员添加了一个灯箱来确认下一步操作。
使用 firebug,我发现了一个 xpath,我可以用它来单击我需要继续的按钮,但遗憾的是它不起作用。
经过一些手动尝试后,我认为按“空格”键就可以继续。
问题是,通过 xpath 或链接文本使用“driver.findElement”的任何尝试都会失败,并在控制台中出现“No such element”错误。
所以我试图只发送 Space 的按键,而不使用 find 元素。
需要明确的是,我想模仿某人只按空格键而不事先单击或选择任何内容。
我尝试使用 driver.Keyboard...但无法识别“键盘”,因此我不知道如何在不使用 driver.findElement 的情况下发送此按键。
给我带来问题的代码是:
driver.findElement(By.xpath("//div[4]/div[3]/div/button")).click();
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
谢谢您,祝您有美好的一天!
我是机器人框架的新手。
我已经把chromedriver.exe文件放在系统路径中。现在,当我在 RIDE 中运行脚本时,出现此错误:
WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
在 RIDE 本身中还有其他设置路径的方法吗?
更新:我的路径变量包括:
C:\Driver\chromedriver.exe;
selenium webdriver robotframework selenium-chromedriver selenium2library
python 和 selenium webdriver 的新手。我正在尝试检查我自己网页上的所有链接,并使用它的 http 状态代码来查看它是否是损坏的链接。我正在运行的代码(从原来的减少)...
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import requests
links = driver.find_elements_by_xpath("//a[@href]")
while len(links):
url = links.pop()
url = url.get_attribute("href")
print(url)
Run Code Online (Sandbox Code Playgroud)
html看起来像...
<ul>
<li><a href = "https://www.google.com/">visit google</a></li>
<li><a href = "broken">broken link ex</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
当我运行我的脚本时,唯一打印的链接是谷歌链接而不是断开的链接。我做了一些测试用例,似乎只有链接中包含短语“ http://www ”的链接才会被打印出来。虽然我可以更改我网页上的 href 链接以包含此短语,但我有具体的原因无法包含它们。
如果我可以使用 获取所有链接(带或不带“ http://www ”短语)driver.find_elements_by_xpath("//a[@href]"),那么我可以稍后在脚本中转换这些链接以包含该短语,然后获取 http 状态代码。
我看到了其他帖子,但没有一个能帮助我克服这个障碍。任何澄清/解决方法/提示将不胜感激。
我想ZoomIn稍后ZoomOut使用下面的代码,但它不起作用。
public void ZoomIn()
{
new Actions(driver)
.SendKeys(Keys.Control).SendKeys(Keys.Add)
.Perform();
}
public void ZoomOut()
{
new Actions(driver)
.SendKeys(Keys.Control).SendKeys(Keys.Subtract)
.Perform();
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法 - 请指导我。谢谢。
这是我的第一个网络抓取项目,我使用 selenium webdriver 和 Python 来在网站上选择一些选项后动态生成一些 csv 文件(尽管我还没有做到这一点)。
\n\n但是,当执行到达按钮 click() 时,我遇到意外超时。单击已执行,但它卡在那里并且直到超时才继续执行。
\n\n关于如何解决这个问题有任何线索吗?
\n\n谢谢!!
\n\nfrom selenium import webdriver\nfrom selenium.webdriver.support.ui import Select\nimport time\n\n\ndriver = webdriver.Firefox()\ndriver.get(\'http://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATBHE/estatisticasSinac.app/Default.aspx\')\ndriver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_lnkOptantesPorCNAE\').click()\nSelect(driver.find_element_by_id("ctl00_ctl00_Conteudo_AntesTabela_ddlColuna")).select_by_visible_text("Munic\xc3\xadpio")\nfiltro_uf = driver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_btnFiltros\')\n\nfor i in range (1, 28):\n filtro_uf.click()\n uf = Select(driver.find_element_by_id("ctl00_ctl00_Conteudo_AposTabela_ddlUf"))\n uf.options[i].click()\n time.sleep(2)\n driver.find_element_by_id(\'chkTodosMunicipios\').click()\n time.sleep(2)\n driver.find_element_by_xpath("//*[contains(text(),\'Ok\')]").click()\n time.sleep(2)\n\n# Here is where my code get stuck and gets a timeout\n driver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_btnExibir\').click()\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的错误:
\n\nTraceback (most recent call last): \nFile "/home/hissashi/Desktop/Python3/WS_SINAC/download_SINAC.py", line 22, in <module> driver.find_element_by_id(\'ctl00_ctl00_Conteudo_AntesTabela_btnExibir\').click() \n File "/home/hissashi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click\n self._execute(Command.CLICK_ELEMENT) \n …Run Code Online (Sandbox Code Playgroud) svg 图标是可点击的。
<div class="some-class">
<svg aria-label="Search" class="some-icon" width="24" height="24" fill="#000" viewBox="0 0 24 24">
<path d="M9.5,...,5 9.5,5Z">
</path>
</svg>
</div>
Run Code Online (Sandbox Code Playgroud)
示例代码:
from selenium import webdriver
driver = webdriver.Chrome(CHROME_DRIVER_LOCATION)
driver.find_element_by_xpath('//*[@id="SearchForm"]/div[1]/span/div[1]/div[2]/svg/path').click()
Run Code Online (Sandbox Code Playgroud)
错误:
没有这样的元素:无法定位元素:{"method":"xpath","selector":"///*[@id="SearchForm"]/div[1]/span/div[1]/div[2 ]/svg/路径"}
如何比较两个 selenium WebElements 以查看它们是否相同?
首先我检索一个列表input_fields和first_input元素:
self.input_fields = driver.find_elements(By.CLASS_NAME, class_name)
self.first_input = driver.find_element(By.ID, id)
然后我尝试检查input_fields[0]和first_input是否是同一个 WebElement。
if self.first_input is not self.input_fields[0]:
self.__log.warning("WebElement first_input : {} != {}".format(self.first_input, self.input_fields[0]))
Run Code Online (Sandbox Code Playgroud)
尽管session和element相同,但无论如何都会触发警告消息。
WARNING - WebElement first_input: <selenium.webdriver.remote.webelement.WebElement (session="796bf0bcf3e0df528ee932d477951689", element="94a2ee62-9511-45e5-8aa3-bd3d3e9be309")> != <selenium.webdriver.remote.webelement.WebElement (session="796bf0bcf3e0df528ee932d477951689", element="94a2ee62-9511-45e5-8aa3-bd3d3e9be309")>
Run Code Online (Sandbox Code Playgroud) 在标记为重复之前,请考虑我已经浏览了许多相关的堆栈溢出帖子,以及网站和文章。我还没有找到解决方案。
这个问题是这个问题的后续,Selenium Webdriver 没有找到 XPATH 尽管看似相同的字符串。我通过更新代码以更优雅的方式工作,确定问题实际上并非来自 xpath 方法:
for item in feed:
img_div = item.find_element_by_class_name('listing-cover-photo ')
img = WebDriverWait(img_div, 10).until(
EC.visibility_of_element_located((By.TAG_NAME, 'img')))
Run Code Online (Sandbox Code Playgroud)
这适用于前 5ish 元素。但是在那之后它超时了,通过获取 img_div 的内部 html 并打印它,我发现对于超时的元素,而不是我想要的图像,有一个带有“lazyload-placeholder”类的 div。这导致我抓取延迟加载的元素,但我找不到答案。如您所见,我正在使用 WebDriverWait 尝试为其加载时间,但我也尝试了站点范围的等待调用以及 time.sleep 调用。等待似乎并不能解决它。我正在寻找处理这些延迟加载图像的最简单方法,最好是在 Selenium 中,但如果有其他库或产品可以与我已经拥有的 Selenium 代码一起使用,那就太好了。任何帮助表示赞赏。
selenium ×10
webdriver ×10
python ×4
c# ×2
web-scraping ×2
xpath ×2
.net ×1
api ×1
click ×1
getattribute ×1
java ×1
keypress ×1
lazy-loading ×1
python-3.x ×1
reload ×1
svg ×1
testing ×1