标签: webdriver

Selenium刷新页面并重新发送数据

我的测试用例发生了这种奇怪的事情,但是我不想修复它,而是想暂时“绕过”它。以下步骤允许我做到这一点:

1) 单击“后退”,将浏览器导航到后一页 2) 刷新页面 3) 正常继续

但是,在第二步我从 Firefox 收到一个确认模式框,询问我是否要重新发送数据,单击此按钮后,一切都会再次正常运行。

这个确认框破坏了我的代码,我找不到处理它的方法。

有没有 selenium webdriver api 可以实现这个功能?

干杯。

api selenium webdriver reload

1
推荐指数
1
解决办法
2748
查看次数

Selenium webdriver C# 等待文本出现

我希望实现

wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//div[@id='timeLeft']"), "Time left: 7 seconds"));
Run Code Online (Sandbox Code Playgroud)

C# 中的函数,等待文本出现。然而,它textToBePresentInElementLocated()仅在 java 中可用。在 C# 中是否有一种简单的方法来实现此目的,等待文本出现在页面上?

c# testing selenium webdriver selenium-webdriver

1
推荐指数
1
解决办法
1万
查看次数

Selenium Webdriver (Java) ,需要将“Space”按键发送到整个网站

我的问题如下。

我正在尝试自动化我工作的网站的部分测试套件,虽然大部分进展顺利,但开发人员添加了一个灯箱来确认下一步操作。

使用 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)

任何帮助,将不胜感激。

谢谢您,祝您有美好的一天!

java selenium webdriver keypress

1
推荐指数
1
解决办法
2万
查看次数

在 RIDE(机器人框架)中添加 chrome web 驱动程序

我是机器人框架的新手。

我已经把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

1
推荐指数
1
解决办法
5379
查看次数

通过 href 不工作从 driver.find_elements 获取所有链接

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 状态代码。

我看到了其他帖子,但没有一个能帮助我克服这个障碍。任何澄清/解决方法/提示将不胜感激。

python selenium xpath webdriver

1
推荐指数
1
解决办法
5027
查看次数

使用 VisualStudio C# 放大和缩小 selenium Webdriver

我想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)

有没有其他方法 - 请指导我。谢谢。

.net c# selenium webdriver

1
推荐指数
1
解决办法
4217
查看次数

使用 click() webdriver selenium 函数 Python 时超时

这是我的第一个网络抓取项目,我使用 selenium webdriver 和 Python 来在网站上选择一些选项后动态生成一些 csv 文件(尽管我还没有做到这一点)。

\n\n

但是,当执行到达按钮 click() 时,我遇到意外超时。单击已执行,但它卡在那里并且直到超时才继续执行。

\n\n

关于如何解决这个问题有任何线索吗?

\n\n

谢谢!!

\n\n
from 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()\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到的错误:

\n\n
Traceback (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)

python selenium webdriver click web-scraping

1
推荐指数
1
解决办法
3720
查看次数

使用 selenium python 点击​​ svg

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/路径"}

python selenium xpath svg webdriver

1
推荐指数
1
解决办法
6245
查看次数

Python Selenium - 检查一个 WebElement 是否等于另一个 WebElement

如何比较两个 selenium WebElements 以查看它们是否相同?

首先我检索一个列表input_fieldsfirst_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)

尽管sessionelement相同,但无论如何都会触发警告消息。

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)

python selenium webdriver getattribute selenium-webdriver

1
推荐指数
1
解决办法
1123
查看次数

如何在 selenium 中处理延迟加载的图像?

在标记为重复之前,请考虑我已经浏览了许多相关的堆栈溢出帖子,以及网站和文章。我还没有找到解决方案。

这个问题是这个问题的后续,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 lazy-loading webdriver web-scraping python-3.x

1
推荐指数
1
解决办法
1457
查看次数