如何点击Facebook群组中的帖子按钮?,webdriver Java

时间:2017-10-30 11:17:07

标签: java facebook selenium post webdriver

我也无法使用下面的代码点击此按钮,我尝试过:

    driver.navigate().to(groupname);
    Thread.sleep(3000); 
    driver.findElement(By.name("xhpc_message_text")).sendKeys(LinkYT+"\n");
    Thread.sleep(3000); 
    driver.findElement(By.xpath("\\button\\span[.=\"Post\"]")).click();

我也使用过waits和cssSelectors但无法点击按钮。我肯定做错了什么

你有意见吗?

<button class="_1mf7 _4jy0 _4jy3 _4jy1 _51sy selected _42ft" data-
testid="react-composer-post-button" type="submit" value="1"><img alt="" 
class="_3-8_ _5gm4 img" 
src="https://www.facebook.com/rsrc.php/v3/yb/r/GsNJNwuI-UM.gif" data-
testid="react-composer-throbber" width="16" height="11"><span 
class="">Post</span></button>

对于我的一次尝试,所有人都没有这样的元素执行。所以xpath,css选择器等我发现这个按钮错了......

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no 
such element: Unable to locate element: 
{"method":"xpath","selector":"//button[@type='submit']
[contains(text(),'Post')]"}
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.30.477700 
(0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 10.0.15063 
x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 46 milliseconds
For documentation on this error, please visit: 
http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'INTERN2017-37', ip: '10.6.220.24', os.name: 'Windows 
10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, 
mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome=
{chromedriverVersion=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41), 
userDataDir=C:\Users\LUCIAN~1.PAT\AppData\Local\Temp\scoped_dir19996_28709}, 
takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, 
handlesAlerts=true, hasTouchScreen=false, version=61.0.3163.100, 
platform=XP, browserConnectionEnabled=false, nativeEvents=true, 
acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, 
browserName=chrome, takesScreenshot=true, javascriptEnabled=true, 
cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Session ID: 2bbb3a860bbafbca888b4a9c5af20029
*** Element info: {Using=xpath, value=//button[@type='submit']
[contains(text(),'Post')]}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)

2 个答案:

答案 0 :(得分:0)

使用以下方式进行操作:

  WebElement elem = driver.findElement(By.xpath("//button[@type='submit']//span[contains(text(),'Post')]"));
    Actions actions = new Actions(driver);

    actions.moveToElement(elem).click().perform();

答案 1 :(得分:0)

你的答案是正确的,但我猜你也可以像这样使用SPAN直接使用xpath

WebElement elem = driver.findElement(By.xpath("//span[contains(text(),'Post')]"));
Actions actions = new Actions(driver);
actions.moveToElement(elem).click().perform();